목록CodingTest (432)
기록방
👉 문제링크 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 🔸 문제 분석 🔸 V미터 나무를 낮에 A미터 오르고, 밤에 B미터 미끌어떨어진다. 몇 일만에 나무를 다 오르는지 구한다. A, B, V 의 범위가 10억까지 가므로 단순 반복을 하면 시간초과가 난다. 🔸 코드 🔸 import math A, B, V = map(int, input().split()) print(math.ceil((V-A)/(A-B)) + 1) 🔸 코드 해석 🔸 하루하루 계산을 새는게 아니라 값의 차이를 나누고 반올림해서 일수를 구했다. math 모듈의 ceil함수는 올림 함수이다. V-A : ..
👉 문제링크 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 🔸 문제 분석 🔸 카드 리스트에서 첫 번째 카드를 버리고, 가장 위로온 카드를 마지막으로 교체해 가며 마지막 1장을 출력한다. 🔸 코드 🔸 from collections import deque N = int(input()) arr = deque(range(1,N+1)) while len(arr) > 1: arr.popleft() arr.rotate(-1) print(arr[0]) 🔸 코드 해석 🔸 맨 앞 원소를 지우고, 전체 로테이션이 필요하므로 데..
👉 문제링크 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 🔸 문제 분석 🔸 입력 값에 따라 요세푸스 순열을 구현한다. 원형으로 앉아있는 N명의 사람들 중 마지막 한 명이 남을 때까지 K번째 사람을 제거한다. 🔸 코드 🔸 N, K = map(int,input().split()) arr = list(range(1,N+1)) print("",sep="") 🔸 코드 해석 🔸 사람들의 인덱스를 기억하기 위해 1부터 N까지의 값을 리스트로 저장한다. 현재 index에서 K를 더한 위치의 사람을 제거한다. 더한 위치 값이 전체 길이를 초과하지 않도록 % 연산을 수행한다. 제거는 pop을 사용한다. 🔸 e..
👉 문제링크 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 🔸 문제 분석 🔸 입력된 k층의 n호에 몇 명이 사는지 출력하는 문제이다. 0층 1호에서 n호는 1명에서 n명이 산다. 1층부터는 'k-1층의 1호~n호' 에 사는 사람들 수의 합만큼 살고있다. 🔸 코드 🔸 T = int(input()) apt = [list(range(1,15))] for i in range(1,15): apt.append([1]) for j in range(1,14): apt[i].append(apt[i][j-1] + apt[i-1][j]) for i in range(T..
👉 문제링크 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 🔸 문제 분석 🔸 수를 입력받아 오름차순 정렬한다. 차례대로 출력한다. N의 크기가 최대 1,000,000 이므로 빠른 입출력이 필요하다. 🔸 코드 🔸 import sys input = sys.stdin.readline print = sys.stdout.write N = int(input().strip()) arr = [] for i in range(N): arr.append(int(input().strip())) arr.sort() fo..