본문 바로가기
728x90

백준41

[BOJ/Python] 20437. 문자열 게임 2 📌 문제 https://www.acmicpc.net/problem/20437 20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net 📌 문제 접근 방법 defaultdict 진짜 편하다! alpha = defaultdict(list) : 이런 식으로 괄호 안에 값의 초기값 형태를 지정해주면 된다! 딕셔너리의 키가 없어도 바로 값을 저장할 수 있다. 📌 코드 import sys from collections import defaultdict ''' superaquatornado 2 ''' def string_game.. 2021. 8. 28.
[BOJ/Python] 17298. 오큰수 📌 문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 📌 문제 접근 방법 스택을 활용해서 풀이해보았다. 오큰수가 존재하지 않으면 -1을 입력하기 때문에 answer의 초기값을 -1로 설정했다. 스택에 값을 넣고 스택에 들어있는 값보다 큰 값이 들어오면 그 값보다 작은 값을 스택에서 모두 빼낸다. 예시로 수열 3 5 2 7 을 순회한다면, i = 0 / 수열의 해당 값 = 3 스택이 비어있으므로 3과 3의 인덱스를 각각 스택에 넣는다. 현재 answer.. 2021. 8. 28.
[BOJ/Python] 1541. 잃어버린 괄호 📌 문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 📌 문제 접근 방법 처음엔 내가 직접 수식을 풀 듯이 괄호를 넣어주기 위해 따로 temp리스트에 저장해서 계산하는 코드를 구현했었는데, 생각해보니 더 간단하게 표현할 수 있었다. 어쨌든 최소가 되기 위해서는 -가 많아야 한다. 그래서 첫 번째 -가 나온 이후로는 부호를 따질 것 없이 모든 숫자를 다 마이너스 해주면 된다! (어차피 괄호를 삽입하면 모든 숫자를 다 마이너스할 수 있으므.. 2021. 8. 28.
[BOJ/Python] 2805. 나무 자르기 📌 문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 📌 문제 접근 방법 알고리즘 분류가 이분 탐색이고, 대부분 이분탐색으로 풀이를 했던데 난 조금 다르게 접근해서 풀어보았다! 처음엔 문제의 스토리텔링 순서대로 읽어가며 맨 위에서부터 차근차근 높이를 하나씩 낮추면서 탐색을 했다. 결과는 시간 초과! 그 다음엔 주어진 나무의 길이를 모두 더하고 필요한 만큼의 나무 길이를 빼준 후, 나머지만큼의 나무를 N.. 2021. 8. 28.
728x90