본문 바로가기
728x90

백준27

[백준] 2164 카드2 python 알고리즘 문제 문제 2164. 카드2 1. 나의 코드와 발상 과정 from collections import deque n = int(input()) queue = deque([i for i in range(n, 0, -1)]) while len(queue) > 1: queue.pop() queue.rotate(1) # queue.appendleft(queue.pop()) print(queue[0]) 4321 을 예로 들면, 1번이 빠지고 432가 남고 그다음 2를 맨 뒤에 배치해서 243이 되게 만든다. 이 순환을 반복해서 하나의 원소만 남게 하면 된다. 구글 선생님께 queue.appendleft(queue.pop())의 과정을 단순하게 할 수 있는 것이 무엇이 있냐 했더니, collection.deque 모듈의 .. 2022. 4. 24.
[백준] 11866 요세푸스 문제 0 python 알고리즘 문제 문제 11866. 요세푸스 문제 0 1. 나의 코드와 발상 과정 from collections import deque queue = deque() answer = [] n, k = map(int, input().split()) for i in range(1, n+1): queue.append(i) while len(answer) < n: for i in range(k-1): queue.append(queue.popleft()) answer.append(queue.popleft()) print("") 예제 입력을 보고 순간 이해가 되지 않았다. 1~7번째의 사람이면 첫 번째 죽는 사람은 3번째 사람인데, 왜 6번째 사람이 1번으로 죽는 것인지에 대해 의문이었다. 그렇지만 잘못 이해했다는 것을 금방 알 수 .. 2022. 4. 24.
[백준] 10866 덱 python 알고리즘 문제 문제 10866. 덱 1. 나의 코드와 발상 과정 import sys from collections import deque n = int(input()) queue = deque() answer = [] for _ in range(n): order = sys.stdin.readline().strip() if order[0:10] == 'push_front': queue.append(int(order[11:])) elif order[0:9] == 'push_back': queue.appendleft(int(order[10:])) elif order[0:9] == 'pop_front': if not queue: answer.append(-1) else: answer.append(queue.pop()) eli.. 2022. 4. 24.
[백준] 10845 큐 python 알고리즘 문제 문제 10845. 큐 1. 나의 코드와 발상 과정 import sys from collections import deque n = int(input()) queue = deque() for _ in range(n): order = sys.stdin.readline().strip() if order[0:4] == 'push': queue.appendleft(int(order[5:])) elif order[0:5] == 'front': if not queue: print(-1) else: print(queue[-1]) elif order[0:4] == 'back': if not queue: print(-1) else: [print(queue[0])] elif order[0:4] == 'size': print.. 2022. 4. 24.
[백준] 10828 스택 python 알고리즘 문제 문제 10828. 스택 1. 나의 코드와 발상 과정 import sys n = int(input()) queue = [] for _ in range(n): order = sys.stdin.readline().strip() if order[0:4] == 'push': queue.append(int(order[5:])) elif order[0:3] == 'top': if not queue: print(-1) else: print(queue[-1]) elif order[0:4] == 'size': print(len(queue)) elif order[0:5] == 'empty': if len(queue) == 0: print(1) else: print(0) else : if not queue: print(-1).. 2022. 4. 24.
[백준] 1436 영화감독 숌 python 알고리즘 문제 문제 1436. 영화감독 숌 1. 나의 코드와 발상 과정 doom_list = [] i = 0 while True: if '666' in str(i): doom_list.append(i) i += 1 if len(doom_list) == 10000: break print(doom_list[int(input())-1]) 일단 문제에 대한 이해가 살짝은 필요했다. 반복되는 6이 세번 있으면 그 숫자를 영화의 제목으로 쓰는 것이다. 1편부터 쓰는 영화의 제목에 들어갈 수는 다음과 같다. 666, 1666, 2666, 3666, 4666, 5666, ... 6편까지는 앞자리 숫자가 바뀌는데, 7번째부터 숫자가 바뀐다. 6660, 6661, 6662, 6663, ... 6666, ... 6669, 7666, .... 2022. 4. 24.
728x90