본문 바로가기

반응형

코딩/Python

(75)
[Python] 백준 2798 블랙잭 코드 작성 n,m = map(int, input().split()) arr = list(map(int, input().split())) ans = 0 for i in range(n): for j in range(i+1, n): for k in range(j+1, n): if arr[i] + arr[j] + arr[k] > m: continue else: ans = max(ans, arr[i] + arr[j] + arr[k]) print(ans) 코드 풀이 #1. 3개의 수를 비교해야 하므로 for문을 3개 사용한다. 이때 주의해야 할 점이 범위!!! arr의 리스트 중에서 첫 번째 수 i는 인덱스 0부터 n-1이다. 그럼 두 번째 수 j는 i+1부터 시작하며, 세 번째수 k는 j+1부터 시작한다. #2...
[Python] 백준 7568 덩치 코드 작성 n = int(input()) arr = [ ] for _ in range(n): x, y = map(int, input().split()) arr.append([x,y]) for i in arr: rank = 1 for j in arr: if i[0] < j[0] and i[1] < j[1]: rank += 1 print(rank, end = ' ') 코드 풀이 #. 몸무게와 키를 리스트(arr)에 넣는데, arr = [[x0, y0], [x1,y1], [x2,y2]...] 이와 같은 방식으로 넣는다. rank를 1로 기록하고 i가 0일때 j가 0,1,2,3,4와 비교하고 rank를 1씩 증가시키고 rank를 출력한다. 마찬가지로 i가 1일때 j가 0,1,2,3,4와 비교한다.
[Python] 백준 1912 연속합 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 코드 작성 n = int(input()) k = list(map(int, input().split())) ans = [k[0]] for i in range(1,n): ans.append(max(ans[i-1]+k[i],k[i])) print(max(ans)) 코드 풀이 #문제 이해 인덱스 0부터 i까지의 합이 큰 지, 또는 i의 값이 큰 지를 비교하는 문제이다. 물론 문제에서는 중간 값 중에서 여러 개를 요..
[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..

반응형