반응형
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를 출력한다.
🤔느낀 점
이진탐색은 안넣어도 통과하지만 넣은 코드가 더 빠르긴 했다.

반응형
댓글