목록BOJ (95)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/1904풀이 코드n = int(input())dp = [1] * nfor i in range(1,n): dp[i] = (dp[i-1] + dp[i-2]) % 15746print(dp[-1])코드 해석경우의 수를 살펴보면1 자릿수 일 땐 1 1개2 자릿수 일 땐 00,11 2개3 자릿수 일 땐 001,100,111 3개4 자릿수 일 땐 0000,0011,1001,1100,1111 5개5 자릿수 일 땐 00001,00100,00111,10000,10011,11001,11100 8개 어라...?피보나치수열이랑 똑같잖아? 그래서 DP를 사용한 피보나치수열로 풀었다.점화식은 dp[i] = dp[i-1] + dp[i-2]이다. htt..
문제 링크https://www.acmicpc.net/problem/10448풀이 코드t = [n*(n+1)//2 for n in range(1, 46)]dap = [0] * 1001for i in t: for j in t: for k in t: if i+j+k 코드 해석수를 미리 구해놓은 뒤 푸는 방식을 사용하였다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/2193 풀이 코드n = int(input())dp = [0] * (n + 1)dp[1] = 1for i in range(2, n+1): dp[i] = dp[i-1] + dp[i-2]print(dp[n])코드 해석경우의 수를 살펴보면1 자릿수 일 땐 0,1 2개2 자릿수 일 땐 00,01,10 3개3 자릿수 일 땐 000,001,010,100,101 5개4 자릿수 일 땐 0000,0001,0010,0100,0101,1000,1001,1010 8개 어라...?피보나치수열이랑 똑같잖아? 그래서 DP를 사용한 피보나치수열로 풀었다.점화식은 dp[i] = dp[i-1] + dp[i-2] 이다. 체감 난이도: ★☆☆☆☆

문제 링크https://www.acmicpc.net/problem/2346풀이 코드from collections import dequeimport sysinput = sys.stdin.readlinen = int(input())q = deque(enumerate(map(int, input().split()))) # 수와 인덱스 같이 저장dap = []while q: idx, num = q.popleft() # 제일 앞 요소 뽑아서 저장 dap.append(idx + 1) # 순서 저장 if num > 0: # 수가 양수면 q.rotate(-(num - 1)) elif num 코드 해석수열이 원형으로 빙글빙글 돌기 때문에 원형 덱을 사용하여 풀이하였다...

문제 링크https://www.acmicpc.net/problem/10972 풀이 코드n = int(input())arr = list(map(int, input().split()))x = [x for x in range(n,0,-1)] # 마지막 순열if arr == x: # 마지막 순열일 경우 -1 출력 print(-1)else: for i in range(n-1, 0, -1): # 뒤에서부터 비교 if arr[i-1] 코드 해석 1 4 3 5 2를 예로 들어보자.1 4 3 5 2의 다음 순서는 1 4 5 2 3이 된다.로직은 다음과 같다. 뒤에서부터 본인과 앞 수의 값을 비교한다.만약 앞의 수(3)가 더 적다면그 적은 수를 기준(3)으로 삼는다.다시 뒤에서부터 기준보..
문제 링크https://www.acmicpc.net/problem/1269풀이 코드input()a = set(map(int,input().split()))b = set(map(int,input().split()))print(len(a - b) + len(b - a))코드 해석list 대신 set형을 사용하면 차집합 계산이 가능하다. 체감 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/28278 풀이 코드import sysst = []for _ in range(int(sys.stdin.readline())): a = sys.stdin.readline().split() if a[0] == '1': st.append(a[1]) elif a[0] == '2': if st: print(st.pop()) else: print(-1) elif a[0] == '3': print(len(st)) elif a[0] == '4': if st: print(0) else: ..
문제 링크https://www.acmicpc.net/problem/1244 풀이 코드def onoff(idx): # 스위치 변환 if sw[idx] == 0: sw[idx] = 1 else: sw[idx] = 0sw_num = int(input())sw = list(map(int, input().split()))hak_num = int(input())for _ in range(hak_num): sex, num = map(int, input().split()) if sex == 1: # 남자라면 for i in range(1, sw_num+1): # 스위치 비교 후 바꾸기 if i % num == 0: ..