목록백준 (73)
하루일문
문제 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 풀이 N, K = map(int, input().split()) li=[] li_2 = [] for i in range(1, N + 1): li.append(i) k = K -1 while li: if k >= len(li): while k >= len(li): k -= len(li) li_2.append(str(li.pop(k))) k -= 1 else: li_2.append(str(li.pop(k))) k -= 1 k += K print("" %(", ".join(li_2))) 해설 개인적으로 이 문제의 포인트는 출력이라고 생각한다. " ".j..
문제 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 from collections import deque import sys input = sys.stdin.readline n = int(input()) li = deque([]) for _ in range(n): s = input().split() if "push" in s: li.append(s[1]) elif "pop" in s: if li: print(li.popleft()) else: print(-1) elif "size" in ..
문제 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 포인트 제한시간이 촉박한 문제로 한번 풀었는데 시간 초과가 나서 아무리 생각해도 다른 방법이 생각이 안나서 다른 사람 코드를 보고 힌트를 얻어서 다시 만들었다. 풀이 # 시간 초과가 남 import sys input = sys.stdin.readline word = list(input().strip()) n = int(input().strip()) cursor = len(word) for _ in range(n): m = input().strip() if "..
문제 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 문제를 간략하게 해설하자면 예시 오름차순으로 정렬된 1~8의 숫자를 스택으로 4 3 6 8 7 5 2 1의 순서로 출력하기 위해 push(+) pop(-)을 해주면 된다. 방법은 해설해서 설명하겠다 주위 : "No"가아닌 "NO"다! 입력을 주위하자 코드 import sys input = sys.stdin.readline from collections import deque ..
문제 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 from collections import deque import sys input = sys.stdin.readline N = int(input()) stack = deque([]) for _ in range(N): order = input().strip() if "push" in order: o = order.split(" ") stack.append(o[1]) elif order == "pop": if not stack: prin..
문제 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net 체스 판에서 움직이는 문제이다. 포인트는 움직이는 방법을 정의해주고, 체스판의 형태를 잘 이해하여 체스를 움직이는 것이다. 공간을 이해한다면 수월하게 풀 수 있다. 코드 # 움직이는 방향 move = {"R" : (0, 1), "L" : (0, -1), "B" : (1, 0), "T" : (-1, 0), "RT" : (-1, 1), "LT" : (-1, -1), "RB" : (1, 1), "LB" : (1, -1)} k, s, n = map(str, input().s..
문제 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 이 문제는 자리수를 /2를 계속하여 최대한 줄인 다음에 오름차순으로 정렬하는 문제이다. 예를 들어 4 5 1 3 2라면 [4, 5, 2], [3, 2] → [4, 5], [1], [3, 2] → [4] [5], [1], [3], [2] → [4, 5], [1], [3], [2] → [1, 4, 5], [2, 3] → [1, 2, 3, 4, 5] 이런식으로 변한다. 코드 import sys input = sys...
문제 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) n, k = map(int, input().split()) X = list(map(int, input().split())) X.sort(reverse = True) print(X[k-1])