본문 바로가기
백준 13305 N = int(input()) distance = list(map(int, input().split())) price = list(map(int, input().split())) min_price = 1000000000 # 기름을 넣을 가격(최소) result = 0 for i in range(N-1): tmp = price[i] if min_price > tmp: min_price = tmp result += distance[i] * min_price print(result) 2021. 3. 9.
백준 19939 N, K = map(int, input().split()) if N >= (K*(K+1))/2: if (N - ((K*(K+1))/2)) % K == 0: print(K-1) else: print(K) else: print(-1) 어제 차례차례 대입해보며 규칙찾는 방법을 깨달아서 바로 적용했다. 바구니에 1개씩은 무조건 들어가야 하고 공의 개수가 모두 달라야하므로, 모든 바구니에 한개씩 담고 나머지를 다르게 분배했다. 우선 나눠 담을 수 있으려면 N이 1부터 K까지의 합보다 같거나 커야한다. 따라서 N >= ((K * (K+1)) / 2) 이면 K-1이라고 단정지었는데 예외가 있었다. (N - ((K*(K+1))/2)) % K == 0 인 경우는 K-1이지만, 나누어 떨어지지 않는 경우도 있었다. 먼저 .. 2021. 3. 9.
백준 1783 N, M = map(int, input().split()) if N == 1: print(1) elif N == 2: print(min(4, (M+1) // 2)) else: if M < 7: print(min(4, M)) else: print(M-2) 답을 알고 나니 코드는 정말 간단했다. 하다 하다 안되서 다른사람들의 풀이를 봤는데 접근방식 자체가 달랐다. 나는 문제를 읽고 나서 나이트가 움직일 수 있는 4가지 경우를 리스트에 담아, 한 번 한 번 움직이려고 했는데 그렇게 해보니 반복문의 중첩이 많아지고 잘못된 방식으로 풀고있다는 느낌이 들었다. N, M = map(int, input().split()) moves = [(-2, 1), (-1, 2), (1, 2), (2, 1)] now_row = N.. 2021. 3. 7.
백준 1439 # 1이나 0에서 0이나 1로 바뀔때마다 count+1 # count = 0 이면 행동횟수 0 # ----------------------- # count = 1 이면 행동횟수 1 # count = 2 이면 행동횟수 1 # count = 3 이면 행동횟수 2 # count = 4 이면 행동횟수 2 # count = 5 이면 행동횟수 3 # ,,,, S = input() count = 0 # 행동 횟수 prev_s = S[0] for i in range(1, len(S)): if prev_s != S[i]: count += 1 prev_s = S[i] else: pass if count == 0: print(0) elif count % 2 != 0: print(count//2 + 1) else: print.. 2021. 3. 6.