목록Baekjoon (141)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/11659 풀이 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())su = list(map(int, input().split()))pre = [0]tot = 0for i in range(n): tot += su[i] pre.append(tot)for i in range(m): i, j = map(int, input().split()) print(pre[j] - pre[i-1])코드 해석누적합 기법을 사용하였다. 체감 난이도: ★★★☆☆
문제 링크https://www.acmicpc.net/problem/2559풀이 코드n, k = map(int,input().split())ondo = list(map(int, input().split()))dap = []dap.append(sum(ondo[:k]))for i in range(n - k): dap.append(dap[i] - ondo[i] + ondo[k+i])print(max(dap))코드 해석평범한 방법으로 풀이하니까 시간 제한이 걸렸다. 체감 난이도: ★★☆☆☆
문제 링크https://www.acmicpc.net/problem/1002 풀이 코드 import matht = int(input())for _ in range(t): x1, y1, r1, x2, y2, r2 = list(map(int, input().split())) btw = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) if btw == 0 and r1 == r2: # 두 원의 크기가 같아 겹치는 경우 print(-1) elif r1 + r2 == btw or abs(r2 - r1) == btw: # 내접 혹은 외접일 때 print(1) elif (abs(r1 - r2) 코드 해석두 좌표 사의의 거리를 ..
문제 링크https://www.acmicpc.net/problem/15652풀이 코드 n,m = map(int, input().split())dap = [] def dfs(start): if len(dap) == m: print(*dap) return for i in range(start, n+1): #받은 수보다 큰 수부터 시작 dap.append(i) dfs(i) # 반복 dap.pop() #원상복구 dfs(1)코드 해석DFS를 사용하여 풀이하였다. 체감 난이도: ★★★☆☆
문제 링크https://www.acmicpc.net/problem/4948 풀이 코드 num = 123456 * 2 + 1tot = [1] * numfor i in range(1, num): # 미리 소수 판단 if i == 1: continue for j in range(2, int(i**0.5)+1): # 2부터 i의 제곱근까지의 수로 나눠지는지 if i % j == 0: tot[i] = 0 breakwhile 1: dap = 0 n = int(input()) if n == 0: break for i in range(n+1, 2*n+1): # n부터 2n까지 dap += t..
문제 링크https://www.acmicpc.net/problem/9237풀이 코드n = int(input())day = list(map(int, input().split()))day.sort(reverse=True)cho = []for i in range(n): cho.append(day[i] + 1 + i)print(max(cho) + 1)코드 해석나무를 심는 시간, 나무가 자라는 시간, 몇번째 나무인지를 모두 더하여 계산한다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/15650 풀이 코드n, m = map(int, input().split())s = []def f(start): if len(s) == m: print(*s) return for i in range(start, n + 1): if i not in s: s.append(i) f(i+1) s.pop() f(1)코드 해석https://woojinhong.tistory.com/151 [백준] 15649번: N과 M (1)/ 파이썬문제 링크 https://www.acmicpc.net/problem/15649 15649번: N과 ..
문제 링크https://www.acmicpc.net/problem/1182풀이 코드n, s = map(int, input().split())num = list(map(int, input().split()))cnt = 0dap = []def hap(inp): global cnt if sum(dap) == s and dap: cnt += 1 for i in range(inp, n): dap.append(num[i]) hap(i+1) dap.pop()hap(0)print(cnt)코드 해석재귀함수를 사용한다.dap이라는 빈 리스트를 만든 뒤 리스트에 숫자들을 넣는다.만약 리스트의 합이 s와 같다면 cnt + 1을 한다. n = 5, s = 0, ..