[Python] 백준 알고리즘 온라인 저지 1158 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 쉽게 설명하자면 원들 돌며 중첩되는 k 번째 사람들을 리스트에서 빼면서 리스트를 비우는 문제로 나머지 개념을 활용하여 원을 돌면 된다. 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) circle = [i for i in range(1, n+1)] result = [] num = k-1 while len(circle): if num >= l..
[Python] 백준 알고리즘 온라인 저지 11053 가장 긴 증가하는 부분 수열 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 처음에는 그냥 set으로 중복을 없애고 길이를 출력하는 거라고 생각했다.😅 (그렇게 쉬울 리가 없다고 생각해서 이런 식으로 풀진 않았지만) 수열을 돌면서 더 큰 수가 있다면 큰 순으로 번호를 매긴다고 생각하면 된다. 코드 import sy..
[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()) minutes = sorted(list(map(int, input().split()))) result = [] r..
[Python] 백준 알고리즘 온라인 저지 10845 큐 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 큐의 구조 이해를 돕는 문제였던 것 같다. FIFO 선입선출에 대해 알고 있다면 쉽게 해결할 수 있었다. 코드 import sys input = sys.stdin.readline def push(x): que.append(x) def pop(): if len(que) == 0: print(-1) else: first = qu..
[Python] 백준 알고리즘 온라인 저지 11052 카드 구매하기 https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 이번 문제의 핵심은 n장의 카드를 구매하는데 가장 많은 돈(최대 값)을 사용해야 한다는 점이다. 문제를 이해하는 것은 오래 걸리지 않았지만 점화식을 어떤 방식으로 만들어야 하는지 이해하는데 오래 걸렸다. 코드 import sys input = sys.stdin.readline n = int(input()) p = [0] + list(ma..
[Python] 백준 알고리즘 온라인 저지 2164 카드2 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net deque 사용법이 익숙하지 않아 쉬운 문제로 접해보기 위해 풀이하였다. 상당히 쉬운 문제였다. 코드 from collections import deque import sys input = sys.stdin.readline n = int(input()) q = deque() for i in range(1, n+1): q.append(i) ..