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로 제일 큰 것을 찾아서 리턴하는 코드이다
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 1145 - 적어도 대부분의 배수 파이썬 (0) | 2023.06.05 |
---|---|
프로그래머스 - 표편집 파이썬 (0) | 2023.06.01 |
프로그래머스 - 파괴되지 않은 건물 파이썬 (0) | 2023.05.25 |
프로그래머스 - 카운트 다운 파이썬 (0) | 2023.05.17 |
프로그래머스 - 억억단을 외우자 파이썬 (1) | 2023.05.15 |
댓글