백준 16953 A -> B Silver I 문제링크 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 나의 코드 BFS 키워드를 보고 바로 BFS로 구현했다. 주어진 테스트케이스는 통과했지만 제출했더니 시간초과가 났다.. BFS에서 방향을 정의해주는 것 대신 가능한 두 가지의 연산된 값에 대한 연산을 반복하는 식이다. # 시간초과 코드 import sys def bfs(num, B): q = [] q.append((num, 0)) while q: newnum, count = q.pop(0) calcnums = [(lambda x: x * 2)(newnum), int((lambda x: x + '1')(str(newnum)))] for ..
백준 1166 선물 Silver III python 문제링크 1166번: 선물 첫째 줄에 N L W H가 주어진다. 모든 값은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 나의 풀이 주어지는 L, W, H에 대한 최대공약수를 찾는다는 느낌으로 접근하면 된다. 여기에 이분탐색을 곁들인. A의 최소값으로 0을 주고, 최대값으로 L, W, H에서의 최소 값을 준다. N개의 상자를 모두 넣을 수 있어야 하기 때문에 더 큰 A가 최대공약수의 조건과 N값을 충족한다면 포인터를 옮겨줘서 탐색을 계속한다. import sys N, L, W, H = map(int, sys.stdin.readline().split()) S, E = 0, max(L, W, H) for _ in rang..
백준 1915 가장 큰 정사각형 Gold V python 문제링크 1915번: 가장 큰 정사각형 첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다. www.acmicpc.net 풀이 import sys input = sys.stdin.readline N, M = map(int, input().split()) s = [[0 for i in range(M + 1)]] for i in range(n): s.append([0] + list(input().strip())) dp = [[0] * (M + 1) for i in range(N + 1)] res = 0 for i in range(N + 1): for j in range(M + 1): if ..