본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 9437번 : 사라진 페이지 찾기

by 빛밤하늘 2021. 6. 17.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

9437번: 사라진 페이지 찾기

각 테스트 케이스에 대해 두가지 정수 N,P가 주어진다. 4의 배수인 N(4 ≤ N ≤ 1000)은 탐구영역의 전체 페이지 수이며, P(1 ≤ P ≤ N)는 선택된 한 페이지다. 입력의 마지막은 하나의 0만 주어진다.

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 0 하나만 입력할 때까지 반복합니다.
while True:
    # 두 정수를 입력하거나 0 하나를 입력합니다.
    # 맨 끝의 \n은 떼어줍니다.
    numbers = stdin.readline().rstrip()

    # 0 하나만 입력했다면
    if numbers == '0':
        # 반복문을 탈출하고 종료합니다.
        break

    # 두 정수를 공백으로 구분해 입력했다면
    # 각각 정수형으로 변환합니다.
    # 4 <= N <= 1000
    # 1 <= P <= N
    N, P = map(int, numbers.split(' '))
    # 시험지 종이의 개수를 저장하는 변수를 선언합니다.
    paper_cnt = N // 4

    # 시험지 종이의 개수만큼 반복합니다.
    for idx in range(paper_cnt):
        # 현재의 종이에서 가장 작은 쪽의 번호를 저장하는 변수를 선언합니다.
        start_page = 2 * idx + 1
        # 현재 종이의 쪽의 번호들을 모두 저장하는 리스트 변수를 선언합니다.
        pages_num = [start_page, start_page + 1, N - start_page, N - start_page + 1]

        # P가 pages_num에 있다면
        if P in pages_num:
            # pages_num에서 P를 없앱니다.
            pages_num.remove(P)
            # 종이에서 번호 P를 뺀 나머지 번호들을 출력 형식에 맞게 출력합니다.
            print(pages_num[0], pages_num[1], pages_num[2])
            # 답을 찾았으니 반복문을 탈출합니다.
            break

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글