프로그래밍/Python

프로그래머스_python lv0. 짝수 홀수 개수

O'bin 2023. 1. 24. 16:54

https://school.programmers.co.kr/learn/courses/30/lessons/120824

 

프로그래머스

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

programmers.co.kr

 

 

내 답안 : 

 

1
2
3
4
5
6
7
8
9
10
def solution(num_list):
    even = 0
    odd = 0
    for i in num_list:    # num_list값에 접근
        if i%2 == 0:     # 2로 나눈 나머지가 0이면
            even += 1    # (=짝수면) even값 1증가
        else:            # 2로 나눈 나머지가 0이 아니면
            odd += 1     # (=홀수면) odd값 1증가
    answer = [even, odd]
    return answer
cs

 

처음에 even, odd = 0 이라고 선언했는데 

TypeError: cannot unpack non-iterable int object 가 발생했다.

파이썬은 변수 초기값 선언을 이렇게 하면 안되나보다.

 

 

 

개선안 : 

 

1
2
3
4
5
def solution(num_list):
    answer = [0,0]     
    for n in num_list:
        answer[n%2]+=1    
    return answer
cs

 

난 홀수 개수 변수, 짝수 횟수 변수를 선언해서 마지막에 answer에 넣었는데,

이렇게 처음부터 리스트로 선언했다.

숫자를 2로 나눈 나머지가 0이냐 1이냐에 따라 짝,홀을 판별하는데 이 나머지값을 바로 인덱스로 활용했다.

코드가 훨씬 짧아지고, if 연산이 필요없어졌다.

이 풀이처럼 배열 형태의 경우 인덱스 측면에서 접근하는 것을 항상 고려해야겠다.