PS

[백준/Python] (D5) 홀수와 짝수의 대결 - 18821

MSHUN 2024. 3. 7.
반응형

Baekjoon Online Judge의 18821 홀수와 짝수의 대결 문제의 Python풀이입니다.

 

18821번: 홀수와 짝수의 대결

첫째 줄에는 테스트케이스의 개수 T(0 이상 1,000,000 이하)가 주어진다. 각각의 테스트케이스는 한 줄로 이루어져 있으며, 그 줄에 1 이상 109 이하의 자연수 n이 주어진다.

www.acmicpc.net

💻코드

import sys
input=sys.stdin.readline
a = [
    # E인 구간들...
]
def binary_search(n):
    left, right = 0, len(a) - 1
    while left <= right:
        mid = (left + right) // 2
        if a[mid][0] <= n <= a[mid][1]:
            return True
        elif n < a[mid][0]:
            right = mid - 1
        else:
            left = mid + 1
    return False

for _ in range(int(input())):
    n = int(input())
    if n!=1 and n<906150257:
        print("O")
    elif n==1 or binary_search(n):
        print("E")
    else:
        print("O")

🧠풀이

906150257 미만은 1이 아니라면 O이다.

그 이후는 E인 구간이 있다. 그 구간을 미리 계산해서 리스트에 넣은 후 입력받은 수가 구간들중에 해당되는지 확인하고 해당된다면 E를 출력한다.

🤔느낀 점

이진탐색은 안넣어도 통과하지만 넣은 코드가 더 빠르긴 했다.

Baekjoon Online Judge

반응형

댓글