level0_주사위 게임1
2024. 12. 4. 21:52ㆍ파이썬_알고리즘(코딩테스트)/level0

내가 제출한 코드
def solution(a, b):
answer = 0
if a % 2 ==1 and b % 2 ==1:
answer += (a**2 + b**2)
elif a % 2 == 1 or b % 2 ==1:
answer += 2*(a+b)
else:
answer += abs(a - b)
return answer
- 조건1: 두 수가 모두 홀수인 경우 (a % 2 == 1 and b % 2 == 1)
- 두 수의 제곱을 더한 값(a**2 + b**2)을 answer에 더한다.
- 조건2: 두 수 중 하나만 홀수인 경우 (a % 2 == 1 or b % 2 == 1)
- 두 수의 합에 2를 곱한 값(2 * (a + b))을 answer에 더한다.
- 조건 3: 두 수 모두 짝수인 경우 (위 조건을 모두 만족하지 않을 때)
- 두 수의 차의 절댓값(abs(a - b))을 answer에 더한다.
- 최종적으로 계산된 answer 값을 반환한다.
다른 사람이 제출한 코드
def solution(a,b):
return a*a+b*b if a & b & 1 else (a+b) << 1 if (a | b) & 1 else abs(a - b)
이 함수는 삼항 연산자와 비트 연산자를 사용하여 입력된 a와 b의 값을 계산한다.
- 첫 번째 조건: a & b & 1
- a & b & 1은 비트 연산자로, a와 b의 가장 낮은 비트(1의 자리)가 모두 1인지 확인한다.
- 즉, a와 b가 둘 다 홀수일 때 조건이 참
- 이 조건이 참이면 a * a + b * b를 반환한다.
- a & b & 1은 비트 연산자로, a와 b의 가장 낮은 비트(1의 자리)가 모두 1인지 확인한다.
- 두 번째 조건: (a | b) & 1
- 첫 번째 조건이 거짓이면, 두 번째 조건 (a | b) & 1이 평가된다.
- a | b는 a와 b 중 하나라도 홀수라면 참
- 이 조건이 참이면 (a + b) << 1을 반환
- (a + b) << 1은 (a + b) * 2와 동일
- 비트 연산자 <<는 값을 왼쪽으로 1비트 이동시켜 2배로 만든다.
- abs(a - b)
- 위 조건이 모두 거짓이면, 두 수의 차의 절댓값 abs(a - b)를 반환
비트 연산자 &란?
- &는 두 숫자의 이진수 표현을 비교하여, 두 숫자의 각 자리 비트가 모두 1인 경우에만 1을 결과로 반환한다.
- 나머지 경우에는 0이 반환

'파이썬_알고리즘(코딩테스트) > level0' 카테고리의 다른 글
| level0_배열 회전시키기 (1) | 2024.12.10 |
|---|---|
| level0_문자열 바꿔서 찾기 (0) | 2024.12.10 |
| level0_부분 문자열 이어 붙여 문자열 만들기 (0) | 2024.12.03 |
| level0_배열의 원소 삭제하기 (1) | 2024.11.28 |
| level0_꼬리 문자열 (0) | 2024.11.28 |