반응형

코테 64

[파이썬, Python] 백준 13305: 주유소

문제 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 코드 n = int(input()) road = list(map(int, input().split())) cost = list(map(int, input().split())) min_cost = cost[0] ans = 0 for i in range(n-1): if cost[i] < min_cost: min_cost = cost[i] ans += min_cost * road[i..

[파이썬, Python] 백준 11399: ATM

문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) time = sorted(list(map(int, input().split()))) cnt = 0 for i in range(n): cnt += time[i] * (n-i) print(cnt) 설명 먼저 하는 사람의 시간이 짧을수록, 결괏값이 작아지므로 시간을 오름차순으로 정렬해 준다. 이후 시간을 cnt에 더해주는데,..

[파이썬, Python] 백준 1676: 팩토리얼 0의 개수

문제 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 import math import sys input = sys.stdin.readline n = int(input()) num = str(math.factorial(n)) cnt = 0 for i in range(len(num)-1, -1, -1): if num[i] == '0': cnt += 1 else: print(cnt) break 설명 우선 팩토리얼 함수를 통해 입력받은 수의 팩토리얼을 계산한다. 이후 계산된 수의 뒷자리부터 0을 카운트하고, 0이 아니면 카운트 된..

[파이썬, Python] 백준 11050: 이항 계수 1

문제 https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 코드 from math import factorial n, k = map(int, input().split()) ans = factorial(n) / (factorial(k)*(factorial(n-k))) print(int(ans)) 설명 기본 모듈 math에 있는 팩토리얼 함수를 통해서 문제를 풀이했다. 이항 계수의 식은 다음과 같다. ​따라서 식에 맞춰 계산을 해서 출력해 주면 된다.

[파이썬, Python] 백준 1931: 회의실 배정

문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) res = [] for i in range(n): a, b = map(int, input().split()) res.append((a,b)) res.sort(key=lambda x: (x[1],x[0])) cnt = 0 end_time = 0 for i,j in res: if i >= end_time: cnt += 1 end_time = j print(cnt) 설명 우선 각 값을 입력받고, key를 이용해..

[파이썬, Python] 백준 11047: 동전 0

문제 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 코드 import sys input = sys.stdin.readline n,k = map(int,input().split()) coin = [] ans = 0 for _ in range(n): coin.append(int(input())) coin.sort(reverse = True) for i in coin: if k >= ..

[파이썬, Python] 백준 1037: 약수

문제 https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) num = list(map(int, input().split())) if n == 1: print(num[0]**2) else: print(min(num)*max(num)) 설명 일반적인 입력의 경우 num 값의 최솟값과 최댓값의 곱이 정답이다. 예제 2와 같은 경우가 예외적인 케이..

[파이썬, Python]] 백준 5086: 배수와 약수

문제 https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 코드 while True: a, b = map(int, input().split()) if a == 0: break if b % a == 0: print('factor') elif a % b == 0: print('multiple') else: print('neither') 설명 조건문을 이용하여 간단하게 풀이가 가능한 문제였다. a와 b가 0일 때, 종료해야 하므로 a==0에 break문을 넣어주었다.

[파이썬, Python] 백준 11659: 구간 합 구하기 4

문제 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 코드 import sys input = sys.stdin.readline n, m = map(int,input().split()) num = list(map(int, input().split())) for i in range(n-1): num[i+1] += num[i] num = [0] + num for _ in range(m): i, j = map(int,input(..

[파이썬, Python] 백준 1463: 1로 만들기

문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 n = int(input()) d = [0] * (n+1) for i in range(2, n+1): d[i] = d[i-1] + 1 if i % 3 == 0: d[i] = min(d[i], d[i//3]+1) if i % 2 == 0: d[i] = min(d[i], d[i//2]+1) print(d[n]) 설명 우선 n+1 개 만큼의 0으로 이루어진 리스트를 만들어준다. 이후 i번째의 값을 i-1번째에 1을 더해준 값으로 우선 지정해준다. 만약 i가 2혹은 3으로 나누어지는 수라면 이 수와 2혹은 ..

반응형