level1_홀짝에 따라 다른 값 반환하기
2024. 6. 24. 21:26ㆍ파이썬_알고리즘(코딩테스트)/level1

내가 제출한 코드
def solution(n):
answer = 0
if n % 2 == 1:
for i in range(1, n+1):
if i % 2 == 1:
answer += i
else:
for i in range(1, n+1):
if i % 2 == 0:
answer += (i * i)
return answer
- 홀수인 경우
- 입력값이 홀수라면(n % 2 == 1), 1부터 n까지의 모든 홀수를 더한다.
- 반복문 내에서 i가 홀수인지(i % 2 == 1) 확인하고, 홀수인 경우 answer에 i를 더한다.
- 짝수인 경우
- 입력값 n이 짝수일 경우, 1부터 n까지의 모든 짝수의 제곱값을 더한다.
- 반복문 내에서 i가 짝수일 경우, answer에 i의 제곱값을 더한다.(i *i로 나타냈지만 i **2로 나타내도 된다)
- 최종적으로 계산된 answer 값을 반환한다.
다른 사람이 제출한 코드1
def solution(n):
return sum(x ** (2 - x % 2) for x in range(1, n+1) if n % 2 == x % 2)
- x in range(1, n+1) : 1부터 n까지의 모든 정수 x에 대해 반복한다.
- if n % 2 == x % 2 : n과 x가 둘 다 홀수 이거나 둘다 짝수인 경우에만 조건을 만족한다.(여기서... 소름... 멋진 코드당..)
- x ** (2 - x % 2) : x가 홀수이면 x, x가 짝수이면 x의 제곱을 계산한다.(... 환상적이다.. 코드)

코드... 감동이다... 정말..
다른 사람이 제출한 코드2(가독성이 위 코드보다 좋다고 칭찬된 코드였다)
def solution(n):
if n % 2:
return sum(range(1, n+1, 2)
return sum([i * i for i in range(2, n+1, 2)])
- 홀수 n
- n % 2는 n이 홀수인지 여부를 판단한다. 홀수이면 True(나머지가 1이나오니깐), 짝수이면 False(나머지가 0이 나오니깐)를 반환한다.
- n이 홀수일 경우, range(1, n+1,2)는 1부터 n까지 2씩 증가하는 숫자의 시퀀스를 만든다.
- sum(range(1, n+1, 2)) 는 이 시퀀스의 모든 요소를 더한 값을 반환한다.
- 짝수 n
- if 조건이 False인 경우 range(2, n+1,2), 2부터 n까지 2씩 증가하는 숫자들의 시퀀스를 만든다.
- sum([i * i for i in range(2, n+1, 2)])는 이 시퀀스의 각 요소를 제곱한 새로운 리스트를 만든 후 이 리스트의 모든 요소를 더한 값을 반환한다.
두 코드.. 모두 날 울리는거 같다...

'파이썬_알고리즘(코딩테스트) > level1' 카테고리의 다른 글
| level1_두 개 뽑아서 더하기 (0) | 2024.06.26 |
|---|---|
| level1_원소들의 곱과 합 (0) | 2024.06.24 |
| level1_숫자 문자열과 단어 (0) | 2024.06.20 |
| level1_시저암호 (0) | 2024.03.05 |
| level1_최소직사각형 (0) | 2024.02.29 |