숫자 n이 주어졌을 때, 이 수가 '이상한(Weird)' 수인지 아닌지 판별하는 문제입니다. 어떤 수가 Weird로 분류되는 조건은 다음과 같습니다.
- 그 수가 홀수인 경우
- 그 수가 짝수이면서 6 이상 20 이하 범위에 속하는 경우
반대로, 그 수가 짝수이면서 2~5 범위에 있거나 20보다 크다면 "Not Weird"로 분류됩니다.
예를 들어 입력이 n = 18이라면, 18은 짝수이면서 6~20 범위에 포함되므로 출력 결과는 "Weird"가 됩니다.
해결 접근 방법
이 문제는 다음 단계를 따라 해결할 수 있습니다.
- n이 홀수이면 "Weird"를 반환합니다.
- 그렇지 않고, n이 짝수이면서 (2 초과 6 미만) 또는 20보다 큰 경우 "Not Weird"를 반환합니다.
- 그 외의 경우, 즉 n이 짝수이면서 6 초과 21 미만이면 "Weird"를 반환합니다.
예제 코드
아래 구현 예시를 통해 더 자세히 이해해 보겠습니다.
def solve(n):
if n & 1:
return "Weird"
elif (n > 1 and n < 6) or n > 20:
return "Not Weird"
elif n > 6 and n < 21:
return "Weird"
n = 18
print(solve(n))입력
18
출력
Weird
코드 설명: n & 1은 비트 AND 연산으로, n의 마지막 비트가 1이면 홀수임을 의미합니다. 이를 활용하면 나머지 연산자 없이도 홀수 여부를 간단하게 확인할 수 있습니다. 이후 조건문에서 짝수인 경우의 범위를 순서대로 검사하여 최종 결과를 반환합니다.