Hoin's security

2. [3주차] Baekjoon 스택 2 (28278번), 요세푸스 문제 0 (11866번) 파이썬 문제풀이 본문

Algorithm/Baekjoon

2. [3주차] Baekjoon 스택 2 (28278번), 요세푸스 문제 0 (11866번) 파이썬 문제풀이

Hoin.s 2023. 10. 4. 14:35

스택 2 (28278번)

import sys
input = sys.stdin.readline


N = int(input())
stack = []
for _ in range(N):
    command = input().rstrip()
    
    #push
    if len(command) > 2:
        stack.append(int(command[2:]))
    
    #pop
    elif command == '2':
        if len(stack)==0:
            print(-1)
        else:
            print(stack.pop())
    
    #size
    elif command == '3':
        print(len(stack))

    #empty
    elif command == '4':
        print(1 if len(stack)==0 else 0)
    
    #top
    elif command == '5':
        if len(stack)==0:
            print(-1)
        else:
            print(stack[-1])
            
    #print(command)
    #print(stack)

sys.stdin은 파이썬의 sys 모듈에서 제공하는 표준 입력(stdin) 스트림을 나타내는 객체이다.

표준 입력 스트림은 사용자가 키보드를 통해 입력한 데이터를 프로그램으로 읽어들일 때 사용된다.

readline() 메서드는 sys.stdin 객체에서 한 줄씩 입력을 읽어오는 메서드이다. 


요세푸스 문제 0 (11866번) 

요세푸스 순열을 출력해주는 프로그램을 만들면 된다. 

import sys

# 입력 받기
n, k = map(int, sys.stdin.readline().split())

# 요세푸스 순열 생성
idx = 0
queue = [i for i in range(1, n+1)]
res = []
while queue:
    idx += k - 1  # k-1번째 인덱스까지 건너뛰기
    if idx >= len(queue):  # 인덱스가 범위를 넘어갈 경우
        idx %= len(queue)  # 나머지 연산을 통해 인덱스 계산
    res.append(str(queue.pop(idx)))  # k번째 수 제거 후 결과 배열에 추가

# 결과 출력
print("<", ", ".join(res), ">", sep="")