목록백준 (266)
홍우진의 개발 일기장
문제 링크https://www.acmicpc.net/problem/14501풀이 코드n = int(input())T, P = [0 for i in range(n+1)], [0 for i in range(n+1)]for i in range(n): a,b = map(int, input().split()) T[i] = a P[i] = b dp = [0 for i in range(n+1)]for i in range(len(T)-2, -1, -1): if T[i]+i 코드 해석DP로 풀었다.역순으로 진행하며dp에는 i번째날까지 일했을 때 최댓값을 보관한다.뒤에서부터 날짜를 초과하지 않는지 T값과 비교하여 확인하고만약 날짜가 초과하지 않았다면지금까지 일했을때의 최댓값과 들어온 값 중 비교하여 ..
문제 링크https://www.acmicpc.net/problem/15720 풀이 코드b,c,d = map(int, input().split())burger = list(map(int, input().split()))side = list(map(int, input().split()))drink = list(map(int, input().split()))burger.sort(reverse=True)side.sort(reverse=True)drink.sort(reverse=True)total = sum(burger) + sum(side) + sum(drink)print(total)for i in range(min(len(burger), len(side), len(drink))): sum = (burge..
문제 링크https://www.acmicpc.net/problem/9461풀이 코드for i in range(int(input())): p = [1,1,1] #배열 앞부분은 미리 선언 n = int(input()) for j in range(n-3): p.append(p[j]+p[j+1]) #배열에 p[n-2] + p[n-3]의 값을 더해줌 print(p[-1]) #마지막 값 출력코드 해석점화식을 찾으면 매우 쉽게 풀 수 있다. 점화식은 다음과 같다.p(n) = p(n−2) + p(n−3) 만약 n이 3 이하라면 p(n)은 1 for문으로 t번 반복한다.배열 앞 세 자리는 식을 위하여 미리 선언해둔다.수를 받은 후배열에 p[n-2] + p[n-3]..
문제 링크https://www.acmicpc.net/problem/10810풀이 코드n,m = map(int, input().split())ba = [0]*nfor _ in range(m) : i,j,k = map(int, input().split()) for x in range(i, j+1): ba[x-1] = k for i in range(n): print(ba[i], end=' ')코드 해석바구니를 0이 들어있는 배열로 만들어준 뒤반복하며 숫자를 각각 넣어준다.마지막엔 한 칸씩 띄어서 배열 안의 숫자들을 출력해 주면 끝. 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/1212 풀이 코드print(bin(int(input(),8))[2:])코드 해석8진수로 숫자를 입력받는다. bin()을 이용하여 2진수로 변환한다.변환 후 2진법을 의미하는 0b가 앞에 붙기 때문에인덱스 슬라이싱을 하여 처리해준다. 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/14467풀이 코드n = int(input()) arr = {}count = 0 for i in range(n): a,b = map(int, input().split()) if a not in arr: arr[a] = b else: if arr[a] != b: count +=1 arr[a] = b print(count)코드 해석 딕셔너리를 사용하는 문제다. 난이도: ★☆☆☆☆
문제 링크https://www.acmicpc.net/problem/1244 풀이 코드n = int(input())s = list(map(int,input().split()))x = int(input())for i in range(x): sex, num = map(int,input().split()) #성별과 번호를 받는다. if sex == 1: #남자라면 for j in range(num,n+1,num): #번호 배수의 스위치를 바꾼다. s[j-1] = abs(s[j-1]-1) #abs는 절대값. -1을 한 후 절댓값을 씌우면 번호가 바뀜. else: #여자라면 s[num-1] = abs(s[num-1]-1) ..
문제 링크https://www.acmicpc.net/problem/17478풀이 코드def j(n, x): print("____" * x + '"재귀함수가 뭔가요?"') if x == n: print("____" * x + '"재귀함수는 자기 자신을 호출하는 함수라네"') else: print("____" * x + '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.') print("____" * x + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.") print("____" * x + '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아..