
문제
https://school.programmers.co.kr/learn/courses/30/lessons/77884프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
- 두 정수 'left', 'right'가 매개변수로 주어질 때,
- left부터 right 까지의 모든 수들 중에서
- 약수의 개수가 짝수인 수는 더하고, 홀수인 수는 뺀 수를 반환
- 제한사항: 1 ≤ left ≤ right ≤ 1,000
- 예시) (left, right)에 (13, 17)로 입력했을 경우, 결과는 43

정답 코드 1
def solution(left, right):
total = 0 # 누적합을 저장할 변수
for i in range(left, right + 1): # left부터 right까지 반복
count = 0 # 약수 개수를 세는 변수
for s in range(1, i + 1): # 1부터 i까지 반복
if i % s == 0: # s가 i의 약수이면 개수 1개 증가
count += 1
if count % 2 == 0: # 약수 개수가 짝수이면 더하고
total += i
else: # 약수 개수가 홀수이면 빼기
total -= i
return total # 최종 합계 반환
정답 코드 2
def solution(left, right):
total = 0
for i in range(left, right+1):
count = 0
for s in range(1, i+1):
if i%s==0:
count+=1
total+= i if count%2 == 0 else -i # 한 줄로 더하기/빼기 처리
return total
오답 코드
def solution(left, right):
total = 0
for i in range(left, right+1):
count = 0
for s in range(1, i+1):
if i%s==0:
count+=1
total+=i if count%2==0 else total-=i
return total
틀린 이유
삼항 연산자와 할당 연산자 혼용 불가
- 방법 1: 조건에 따라 나누기
if count%2==0:
total+=i
else:
total-=i
- 방법 2: 삼항 연산자를 값으로만 쓰기
total+= i if count%2 == 0 else -i
- i if count % 2 == 0 else -i 전체가 하나의 값
- total += (i 또는 -i)로 변환 가능
'코딩 테스트 연습 > [프로그래머스] Python' 카테고리의 다른 글
| [LV.2] 연습문제 > 문자열 다루기 기본 (0) | 2025.06.23 |
|---|---|
| [LV.2] 위클리 챌린지 > 부족한 금액 계산하기 (0) | 2025.06.20 |
| [LV.2] 연습문제 > 문자열 내림차순으로 배치하기 (1) | 2025.06.19 |
| [LV.2] 내적 (0) | 2025.06.17 |
| [LV.2] 문자열 반복 (0) | 2025.06.16 |