문제풀이

https://www.acmicpc.net/problem/15270 코드n, m = map(int, input().split())friends = []for _ in range(m): u, v = map(int, input().split()) friends.append((u, v))ans = 0def bt(used, idx): global ans if idx == m: if len(used)  입력으로 받은 친한 친구 관계 friends에서 각 원소의 커플을 넣는다/넣지 않는다 2가지 경우로 나눠서 탐색하면 된다. 예를 들어서 친한 친구 관계 (1, 2)가 있다고 할 때 1과 2가 같이 춤을 출 지, 안 출 지로 나누는 것이다.만약 같이 출 것이라면 이 커플의 2명 다 ..
https://www.acmicpc.net/problem/2012 코드import sysinput = sys.stdin.readlinen = int(input())ranks = sorted(list(int(input()) for _ in range(n)))ans = 0for i in range(1, n+1): ans += abs(ranks[i-1]-i)print(ans) 무조건 예상 등수를 높게 적어낸 학생부터 높은 등수를 주어야 전체 불만도의 총합이 작아진다. 그러므로 예상 등수를 오름차순 정렬하여 그대로 등수를 부여하고 불만도를 구하면 된다.
·문제풀이/DP
https://www.acmicpc.net/problem/5569 코드w, h = map(int, input().split())dp = [[[0]*4 for _ in range(h)] for _ in range(w)]# 값 초기화for i in range(1, w): dp[i][0][1] = 1for j in range(1, h): dp[0][j][3] = 1for i in range(1, w): for j in range(1, h): dp[i][j][0] = dp[i-1][j][3] # 계속 오른쪽으로 가다가 이번에 위로 온 경우 dp[i][j][1] = (dp[i-1][j][0]+dp[i-1][j][1]) % 100000 # 계속 위로 dp..
https://www.acmicpc.net/problem/6236 코드n, m = map(int, input().split())money = [int(input()) for _ in range(n)]def chk(k): # m번 이하로 인출할 수 있는지 if k  매개 변수 탐색(Parametric Search)조건을 만족하는지 안하는지 여부로 범위를 좁혀나가는 알고리즘이다. 이 문제에서의 조건은 한 번에 인출하는 금액은 k로 제한하고 n일 동안 m번만 인출하여 생활이 가능한지 여부이다. 이 때 정확히 m번을 맞추기 위해 필요 없을 때도 인출할 수 있으므로 m번 이하로 인출 가능한지 여부만 판단하면 된다.
https://www.acmicpc.net/problem/2661 코드n = int(input())def chk(seq): l = len(seq) for i in range(2, len(seq)//2+1): if seq[l-i:] == seq[l-i*2:l-i]: return False return Truedef bt(seq): if len(seq) == n: print(seq) exit() for i in range(1, 4): if seq != '' and str(i) == seq[-1]: # 1글자 부분 수열 확인 continue if chk(seq+str(i)): #..
딜레이레이
'문제풀이' 카테고리의 글 목록 (7 Page)