반응형

파이썬 코테 62

[파이썬, Python] 백준 11866: 요세푸스 문제 0

문제 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) first_k = k f_list = [] a_list = [] for i in range(n): f_list.append(i+1) while f_list: a_list.append(f_list.pop(k-1)) if not f_list: break k += first_k-1 while k > len(f_list): k -= len(f_list)..

[파이썬, Python] 백준 2164: 카드2

문제 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 코드 import collections import sys input = sys.stdin.readline n = int(input()) card = collections.deque([i for i in range(1, n+1)]) while len(card) > 1: card.popleft() card.rotate(-1) print(card[0]) 설명 collections라는 모듈을 이용..

[파이썬, Python] 백준 1874: 스택 수열

문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 코드 import sys input = sys.stdin.readline n= int(input()) stack = [] ans = [] check = 0 cur_num = 1 for _ in range(n): num = int(input()) while cur_num

[파이썬, Python] 백준 4949: 균형잡힌 세상

문제 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 코드 while True: text = input() if text == '.': break stack = [] tf = True for i in text: if i == '(' or i == '[': stack.append(i) elif i == ')': if not stack or stack[-1] == '[': tf = False break elif stack[-1..

[파이썬, Python] 백준 10773: 제로

문제 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) num_list = [] for _ in range(n): num = int(input()) if num != 0: num_list.append(num) else: del num_list[-1] print(sum(num_list)) 설명 우선 수를 입력받아..

[파이썬, Python] 백준 10828: 스택

문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) deque = [] for _ in range(n): com = input().split() if com[0] == "push": deque.append(com[1]) elif com[0] == "pop": if deque: print(deque.pop()) else: p..

[파이썬, 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에 있는 팩토리얼 함수를 통해서 문제를 풀이했다. 이항 계수의 식은 다음과 같다. ​따라서 식에 맞춰 계산을 해서 출력해 주면 된다.

반응형