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