728x90
문제
틀린 코드
만약에 이 문제에서 답을 아래와 같이 적으면 틀린다
def solution(arr):
answer = []
for i in arr:
#첫번째 if문
if i >= 50 and i%2 == 0:
answer.append(i//2)
#두번째 if문
if i < 50 and i%2 != 0:
answer.append(i*2)
else:
answer.append(i)
return answer
이유는 코드의 중복이다
입출력 예시와 같이 '[1,2,3,100,99,98]'로 arr이 주어진다면
1 -> 첫번째 if문 조건 거짓 -> 두번째 if문 해당 -> 2를 출력(곱하기 2를 해서)
2 -> 첫번째 if문 조건 거짓 -> 두번째 if문 거짓 -> else를 통해 2를 출력
3 -> 첫번째 if문 조건 거짓 -> 두번째 if문 해당 -> 6을 출력(곱하기 2를 해서)
100 -> 첫번째 if문 조건 해당, 50을 출력(나누기 2를 해서) -> 두번째 if문 거짓 -> else를 통해 100을 출력
99 -> 첫번째 if문 조건 거짓 -> 두번째 if문 거짓 -> else를 통해 99를 출력
98 -> 첫번째 if문 조건 해당, 49을 출력(나누기 2를 해서) -> 두번째 if문 거짓 -> else를 통해 98을 출력
정리하면 첫번째 조건문 해당, 두번째 조건문 거짓인 원소들은 else를 통해 코드의 중복이 일어난다
즉, [2,2,6,50,100,99,49,98]이 되어서 코드가 통과하지 못한다
맞는 코드
'if-elif-else'로 바꾸면 맞는다
def solution(arr):
answer = []
for i in arr:
if i >= 50 and i%2 == 0:
answer.append(i//2)
elif i < 50 and i%2 != 0:
answer.append(i*2)
else:
answer.append(i)
return answer
의도한 것처럼 [2,2,6,50,99,49]가 나온다
'프로그래밍 > 알고리즘' 카테고리의 다른 글
앞으로 (반복해서) 풀 알고리즘 유형별 문제(총 50개) (0) | 2023.05.02 |
---|---|
프로그래머스 - 완주하지 못한 선수 파이썬 (0) | 2023.04.26 |
백준 11404 - 플로이드 파이썬 (0) | 2023.04.18 |
백준 1753 - 최단경로 파이썬 (0) | 2023.04.17 |
DP 점화식 손으로 정리하기(파이썬) (0) | 2023.04.12 |
댓글