본문 바로가기
프로그래밍/알고리즘

프로그래머스 - 홀수 vs 짝수 파이썬

by monicada 2023. 5. 26.
728x90

문제 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

실패한 코드 

def solution(num_list):
    even = 0
    odd = 0 
    for i in range(len(num_list)):
        if num_list[i] % 2 != 0:
            odd += int(num_list[i])
        else:
            even += int(num_list[i])
    return max(even, odd)

쉬운 문제인데 왜 틀렸나 계속 코드를 뚫어져라 봤다가 답을 찾았다 

문제에서 원소의 값이 홀수, 짝수인지 묻는 것이 아니라 

원소의 인덱스의 짝수, 홀수를 묻는 건데 이 부분을 간과했다 

// 두번째 줄을 수정해야함, 지금은 리스트의 값을 갖고 오는 상태 
    for i in range(len(num_list)):
        if num_list[i] % 2 != 0:
            odd += int(num_list[i])
            
            
// 두번째 줄을 i로 바꿔야 한다, 인덱스를 가져와야 한다 
    for i in range(len(num_list)):
        if i % 2 != 0:
            odd += int(num_list[i])

 

통과한 코드 

def solution(num_list):
    even = 0
    odd = 0 
    for i in range(len(num_list)):
        if i % 2 != 0:
            odd += int(num_list[i])
        else:
            even += int(num_list[i])
    return max(even, odd)

 

다른 사람의 깔끔한 코드 

def solution(num_list):
    return max(sum(num_list[::2]), sum(num_list[1::2]))

'num_list[::2]'는 num_list에서 짝수 인덱스를 가져온다 

[1,2,3,4,5,6]라는 리스트가 있다면 

num_list [::2]는 [1,3,5]를 리턴한다 

 

num_list [1::2]는 num_list에서 홀수 인덱스만 가져온다 

위의 리스트가 있다면 

num_list[1::2]sms [2,4,6]을 리턴한다 

각자 담긴 것들을 sum한 후, max로 제일 큰 것을 찾아서 리턴하는 코드이다

댓글