본문 바로가기
반응형

코딩테스트94

[백준] [그리디] ATM 11399 (파이썬) 코드 # ATM # 돈을 인출하는데 필요한 시간의 합의 최솟값 # 최소 시간이 걸리려면 돈을 빨리 뽑을 수 있는 사람 순으로 줄을 서야한다. # 대기 시간이 최소화 되어야한다. n = int(input()) time_table = list(map(int,(input().split()))) time_table.sort() time = 0 for i in range(n): time += time_table[i] for j in range(i): time += time_table[j] # for i in range(n): # for j in range(i+1): # time += time_table[j] # 이런식으로도 구현가능 print(time) 2021. 3. 14.
[백준] [그리디] 동전 0 11047 (파이썬) 코드 # 각각의 동전들이 Ai 는 Ai-1의 배수 이기 때문에 그리디가 적용이 가능하다. n, k = map(int, input().split()) coins = [] for _ in range(n): coins.append(int(input())) coins.sort(reverse=True) count = 0 for coin in coins: if coin 2021. 3. 14.
[백준] [DP] 정수 삼각형 1932 (파이썬) 스케치 코드 # 정수 삼각형 n = int(input()) arr = [] # 입력 받은 데이터를 저장할 배열 for _ in range(n): data = list(map(int,input().split())) arr.append(data) # dp 테이블 초기화 (할필요 없이 입력받은 테이블을 dp테이블로 생각한다.) # dp = [ [0]*(i+1) for i in range(n) ] # dp[i][j] = i 번째 층에서 j인덱스의 수를 선택한 경우의 합 # dp[0][0] = arr[0][0] for i in range(1, n): for j in range(0, i+1): # 1층이면 index가 0,1 필요 if j == 0: arr[i][j] += arr[i-1][j] elif j == i.. 2021. 3. 14.
[백준] [DP] RGB 거리 1149 (파이썬) 스케치 문제 접근은 하였으나 코드로 구현하는 것이 어려웠다 코드 # rgb거리 구하기 혼자 해결하지 못함 n = int(input()) # n이 2다 arr = [] for _ in range(n): arr.append(list(map(int,input().split()))) # (26, 10, 5) # 모든 집을 칠하는 최솟값을 구할 테이블 dp = [[1001]*3 for i in range(n)] #n 행 3열 테이블 for i in range(n): if i == 0: # 첫번 째 집이다 dp[i][0] = arr[i][0] # r 의 비용 dp[i][1] = arr[i][1] # g 의 비용 dp[i][2] = arr[i][2] # b 의 비용 else: dp[i][0] = arr[i][0] +.. 2021. 3. 14.
[백준] [DP] 파도반 수열 9461 (파이썬) 스케치 규칙이 발견되면 dp로 간단하게 해결 할 수 있다. # 9:16 ~ 9:32 # 파도반 수열 T = int(input()) for _ in range(T): n = int(input()) d = [0]* 101 d[1] = 1 d[2] = 1 d[3] = 1 d[4] = 2 d[5] = 2 # 6번째 부터 규칙이 발견 for i in range(6, n+1): d[i] = d[i-1] + d[i-5] print(d[n]) 2021. 3. 14.
[백준] [DP] 신나는 함수 실행 9184 (파이썬) 스케치 DP를 이용해서 푸는 문제이다. MAX = 21 # 20이 맥스 값이므로 맥스 값 설정 # w(a,b,c)의 값을 저장하는 dp 테이블 초기화 dp = [[[0]*MAX for i in range(MAX)] for _ in range(MAX)] # list index out of range를 방지하는 함수 def inRange(a, b, c): return 0 2021. 3. 14.
[백준] 베르트랑 공준 4948 (파이썬) 코드 에라토스테네스의 체를 이용하면 간단하게 해결 가능하다. import math while True: n = int(input()) if n == 0: break count = 0 check = [True]* (2 * n + 1) # 모든 수가 소수 라고 가정 for i in range(2, int(math.sqrt(2*n) + 1)): if check[i]: j = 2 while i * j 2021. 3. 12.
[백준] 설탕배달 2839 (파이썬) 스케치 코드 # 설탕 배달 출처다국어분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 1 초128 MB153230484253831732.797% # 문제 # 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. # 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. # 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 .. 2021. 3. 12.
[백준] 수 정렬하기 2 2751 (파이썬) # 수 정렬하기 2 성공분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초256 MB113187292801987330.064% # 문제 # N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. # 입력 # 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. # 출력 # 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. # 예제 입력 1 # 5 # 5 # 4 # 3 # 2 # 1 # 예제 출력 1 # 1 # 2 # 3 # 4 # 5 import sys input = sys.stdin.readl.. 2021. 3. 12.
[백준] 카드2 2164 (파이썬) 코드 큐 자료구조를 이해하면 쉽게 풀 수 있는 문제 # 카드2 from collections import deque n = int(input()) q = deque() for i in range(n): q.append(i+1) while len(q) > 1: if (len(q) == 2): q.popleft() break q.popleft() # 제일 위에 있는 카드를 바닥에 버린다 q.append(q.popleft()) # 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. print(int(q.pop())) # 마지막에 있는 카드를 뽑는다. 2021. 3. 12.
[백준] 영화감독 숌 1416 (파이썬) (수정) 코드 # 영화감독 숌 분류 # 1안 매우 비효율적 n = int(input()) s = '666' arr = [] for i in range(3000000): if s in str(i): # if str(i).find(s) != -1: arr.append(i) print(arr[n-1]) # 2안 n = int(input()) num = 666 cnt = 0 while True: if '666' in str(num): cnt += 1 if cnt == n: print(num) break num += 1 2021. 3. 12.
[백준] 그룹단어 체커 1316 (파이썬) 스케치 코드 # 그룹 단어 체커 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초128 MB48212247802129252.393% # 문제 # 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. # 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. # 입력 # 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자.. 2021. 3. 12.
[백준] 가장 긴 증가하는 부분 수열 11053 (파이썬) 스케치 코드 x = int(input()) arr = list(map(int, input().split())) # 먼저 배열과 같은 크기를 같는 1로 가득찬 배열을 하나 만들어준다. ex) r=6, res={1,1,1,1,1,1} dp = [1 for _ in range(x)] # 길이가 가장 긴 /증가하는부분수열의 길이 for i in range(x): i = 2 # 해당 로직은 오름차순 정렬에 대해 생각해야 수월하다 오름차순 정렬을 하려면 # 자신보다 왼쪽에 있는 숫자가 자신보다 작아야 오름차순 정렬이다. ex) 2를 기준으로 1,2 => 오름차순O / 2,2 => 오름차순x # 2번째 자리보다 작은 숫자가 있어야하는것은 1번째 자리이다. ex) 3번째 자리면 우리는 1부터 3까지의 자리만 비교해주면.. 2021. 3. 12.
[백준] 숫자 카드 10815 (파이썬) # 숫자 카드 성공분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초256 MB2714113281914448.522% # 문제 # 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. # 입력 # 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다. # 셋째 줄에는 M(1 ≤ M ≤ 500,0.. 2021. 3. 12.
[백준] Fly me to the Alpha Centauri 1011 (파이썬) # Fly me to the Alpha Centauri 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초512 MB52396147241167329.445% # 문제 # 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. # 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이.. 2021. 3. 12.
반응형