본문 바로가기

반응형

분류 전체보기

(241)
[Python] 백준 1550 16진수 코드 작성 print(int(input(), 16)) https://www.acmicpc.net/problem/1550 1550번: 16진수 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다. www.acmicpc.net
[Python] 백준 15990 1,2,3더하기5 https://www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 코드 작성 dp = [[0 for _ in range(3)] for _ in range(100001)] dp[1] = [1,0,0] dp[2] = [0,1,0] dp[3] = [1,1,1] mod = 1000000009 for i in range(4, 100001): dp[i][0] = (dp[i-1][1] + dp[i-1][2])%mod dp[i][1] = (dp[i-2][0] + dp[i-2][2])%mod dp[i][2] = (dp[i-3][..
[Python] 백준 4344 평균은 넘겠지 코드 작성 n = int(input()) for _ in range(n): k = list(map(int, input().split())) avg = sum(k[1:])/k[0] cnt = 0 for i in k[1:]: if i > avg: cnt += 1 rate = cnt/k[0] * 100 print(f'{rate:.3f}%') 코드 풀이 n = int(input()) for _ in range(n): k = list(map(int, input().split())) avg = sum(k[1:])/k[0] # (리스트 k중에서 인덱스 1부터의 합)/(k의 인덱스 0) cnt = 0 for i in k[1:]: #평균보다 큰 값을 찾아야 하는데 k[0]은 제외 if i > avg: #평균보다 넘을 경..
[Python] 백준 11052, 16194 카드구매하기 1, 2 코드 작성 n = int(input()) k = [0] + list(map(int, input().split())) #2 for i in range(1, n+1): for j in range(1, i+1): k[i] = max(k[i], k[i-j] + k[j]) #1 print(k[n]) 코드 풀이 #1 주어진 카드를 n개라고 했을 때 제일 마지막 카드는 n번째 카드라고 할 수 있으며, i번째 카드라고도 할 수 있다. 그렇다면 i번째를 제외한 카드는 n-1개의 카드라고 할 수 있을 것이다. 구하려는 값은 n번재의 최소값이므로 k[i] = max(k[i], k[i-j] + k[j]) 라고 작성할 수 있을 것이다. #2 카드 값은 첫 번재부터 시작하고 파이썬의 인덱스는 0부터 시작하기 때문에 초기값을 넣었..
[Python] 백준 10844 쉬운계단수 코드 작성 dp = [[0 for _ in range(10)] for _ in range(10001)] for i in range(1,10): dp[1][i] = 1 n = int(input()) for i in range(2, n+1): for j in range(10): if j == 0: dp[i][j] = dp[i-1][1] elif j == 9: dp[i][j] = dp[i-1][8] else: dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] print(sum(dp[n])%1000000000) 코드 풀이 #1 문제 이해 첫 자리수가 n일 경우 그 다음 자리 수는 n+1 또는 n-1이 나올 수 있다. 각 dp의 자리수를 0으로 세팅하고 초기값 1의 자리 수를 세팅한다 dp[1..
지리산 등산(백무동 → 장터목대피소 → 천왕봉) 당초 계획은 1박2일로 백무동 탐방센터에서 세석대피소로 간 후 1박을 하고 장터목, 천왕봉, 다시 장터목, 백무동으로 돌아오는 코스로 가려 하였으나, 11월은 산불예방기간이라서 세석대피소 코스로 갈 수 없다. 어쩔 수 없이 백무동에서 장터목대피소, 천왕봉 가고 다시 장터목, 백무동으로 돌아왔다. 짧은 거리일 수록 경사가 가파르고 난이도는 매우 높다. 평소에 산을 즐겨 가지만 이날은 스스로 반성하는 계기가 되었다. 등산 시작! 11월부터는 동절기라서 2시까지 백무동 탐방센터를 지나가야 한다. 이때 시간은 1시 53분이다. 장터목대피소까지 5.8km를 가야한다. 해발 600m, 첫번째 표지목이다. 700m산행, 20분, 이때까지는 무난하였다. 사진으로 담겨있지는 않았지만 경사가 매우 가파르다. 중간정도 지점..
[Python] 백준 9095 1,2,3더하기 https://www.acmicpc.net/problem/9095 코드 작성 k = int(input()) for _ in range(k): d = [0, 1, 2, 4] n = int(input()) for i in range(4, n+1): d.append(d[i-1]+d[i-2]+d[i-3]) print(d[n]) 코드 풀이 #1 이 문제는 다이나믹 프로그래밍으로 과거에 했던 연산을 누적하면서 수행해 나가는 문제이다. 우선 (1) 0을 1,2,3으로 표현하는 방법은 0가지 (2) 1을 1,2,3으로 표현하는 방법은 ’1‘ 1가지 (3) 2를 1,2,3으로 표현하는 방법은 ’1,1‘ ’2‘ 2가지 (4) 3을 1,2,3으로 표현하는 방법은 ’1,1,1‘ ’2,1‘, ’1,2‘, ’3‘ 4가지 (5) ..
[Python] 백준 8958 OX퀴즈 코드 작성 n = int(input()) for _ in range(n): k = list(input()) cnt = 0 sum = 0 for i in k: if i == 'O': cnt += 1 #cnt = cnt + 1 sum += cnt #sum = sum + cnt else: cnt = 0 print(sum) 코드 풀이 #1 반복하는 값 n을 입력받고 for문을 이용하여 n번 반복한다. ox에 각각 해당하는 리스트 k를 입력받고 카운트(cnt)와 총 합계(sum)를 각각 0으로 설정한다. k의 리스트를 for문으로 이용하는데, 'O'이면 cnt를 1 씩 증가시키고 그 값을 sum에 넣는다. 'X'이면(else) cnt 를 다시 0으로 세팅한다. 그리고 for문이 완성되었을 때 sum값을 출력한다.

반응형