본문 바로가기

전체 글

(171)
[BOJ] [Python] 11047번 : 동전 0 먼저, 동전 N종류를 내림차순으로 정렬해 리스트에 저장한다. 리스트 0번째부터 n-1번째까지 k원을 리스트의 각 값으로 나눈다. 각 나누는 과정이 끝날 때마다 나머지 값으로 K원을 갱신한다. K원보다 리스트의 값이 크다면, K원은 변하지 않을 것이다. 이는 동전을 사용하지 않았다는 뜻이 된다. 따라서, K원보다 작거나 같을 때를 따로 체크해서 동전을 사용했음을 확인해야 한다. num = list(map(int, input().split())) kind = num[0] target = num[1] wallet = [] for _ in range(kind): wallet.append(int(input())) wallet.reverse() result = 0 for coin in wallet: if coin
[BOJ] [Python] 11055번 : 가장 큰 증가 부분 수열 [1, 100, 2, 50, 60, 3, 5, 6, 7, 8]를 예로 이해하고 해결해보자. dp에는 자기 자신의 값이 초깃값으로 들어가 있다. 이제 0번째부터 9번째까지 하나씩 확인하며, dp를 늘려줄 것이다. 규칙은 아래와 같다. n번째) 0번째부터 n-1번째까지 돌면서, 1. n번째 수보다 작은 값을 찾는다. 2. 작은 값들이 가진 dp중 최대의 dp를 n번째 dp에 더해준다. 예를 들어, 지금 4번째라고 한다면 50보다 작은 값은 1과 2이다. 1보다 2의 dp값이 더 크므로, 2의 dp값에 50을 더해준다. 더해진 값은 50의 dp값이 된다. 마지막에 dp 리스트의 최댓값을 출력하면, 가장 큰 증가 부분 수열의 합을 찾을 수 있다. num = int(input()) li = list(map(int..
[BOJ] [Python] 1213번 : 팰린드롬 만들기 예외 처리를 먼저 생각해보자. 알파벳이 홀수인 게 2개 이상이면, 팰린드롬이 될 수 없다. 따라서 이때, I'm Sorry Hansoo"를 출력한다. 팰린드롬은 start, mid, end로 나눠서 구현할 수 있다. start에는 // 2를 이용해서 현재 알파벳의 개수 나누기 2의, 몫이 들어간다. mid에는 % 2를 이용해서 홀수 개수인 알파벳을 1개 넣어준다. end는 start의 역순이다. 참고로 딕셔너리를 중간에 sort 해줬기 때문에, 조건 중 하나인 '사전순으로 앞서는 것을 출력'은 신경 쓰지 않아도 된다. string = input() dic = {} for s in string: dic[s] = 0 for s in string: dic[s] += 1 count = 0 new_dic = so..