반응형
문제 설명: 1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
- a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
- a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
- a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
제한사항
- a와 b는 1 이상 6 이하의 정수입니다.
문제 해결
def solution(a, b):
if a%2 and b%2:
return a**2 + b**2
elif a%2 or b%2:
return 2*(a+b)
else:
return abs(a-b)
def solution(a, b):
if (a&1) & (b&1):
return a**2 + b**2
elif (a&1) | (b&1):
return (a+b) << 1
else:
return abs(a-b)
주석: %2는 내부적으로 나눗셈 과정을 거치지만 &1은 최하위 비트 하나만 확인하므로 CPU 수준에서 더 빠르다. 마찬가지로 2*보다 <<1이 더 적은 자원을 소모한다.
반응형
'코딩_Python(Level.0)' 카테고리의 다른 글
| [Level.0] x 사이의 개수 (0) | 2026.03.12 |
|---|---|
| [Level.0] 배열의 원소만큼 추가하기 (0) | 2026.03.12 |
| [Level.0] 배열 비교하기 (0) | 2026.03.12 |
| [Level.0] 배열의 길이에 따라 다른 연산하기 (0) | 2026.03.12 |
| [Level.0] 문자열 정수의 합 (0) | 2026.03.12 |