내코드
def solution(n):
answer = 0
count = 0
while count < n:
answer += 1
if answer % 3 == 0 or '3' in str(answer):
continue
count += 1
return answer
코드설명
이 코드는 count 변수를 이용해 3x 마을에서 사용할 수 있는 숫자를 세어 나가는 방식으로 동작합니다.
- answer는 현재 확인 중인 숫자를 나타냅니다.
- while 루프에서 answer를 1씩 증가시키면서, 3의 배수이거나 숫자 '3'이 포함된 경우를 건너뜁니다.
- 조건을 통과한 숫자에 대해 count를 증가시키고, count가 n과 같아질 때까지 반복합니다.
- 최종적으로 answer를 반환합니다.
특징
- 숫자를 하나씩 확인하며 조건을 만족하지 않으면 건너뛰는 구조입니다.
- 조건 체크가 continue를 통해 이루어지므로 코드가 직관적입니다.
- while 루프를 사용해 유연한 반복 제어가 가능합니다.
다른 코드
def solution(n):
answer = 0
for _ in range(n):
answer += 1
while answer % 3 == 0 or '3' in str(answer):
answer += 1
return answer
코드설명
이 코드는 for 루프와 while 루프를 조합해 3x 마을의 숫자를 찾습니다.
- for 루프는 n번 반복하며, 각 반복에서 answer를 증가시킵니다.
- while 루프는 증가된 answer가 3의 배수이거나 숫자 '3'을 포함할 경우, 조건을 만족하지 않을 때까지 answer를 추가로 증가시킵니다.
- 최종적으로 answer를 반환합니다.
특징
- 두 가지 반복문을 사용해 조건을 만족하는 숫자를 빠르게 찾습니다.
- 조건 확인과 숫자 증가가 while 루프 안에서 처리되므로 간결합니다.
- 반복 횟수가 명확한 for 루프를 사용해 코드 가독성을 높였습니다.
두 코드 비교
- 코드 구조:
내 코드는 while 루프 하나만 사용하여 조건 확인과 반복을 처리하는 반면, 다른 코드는 for와 while을 조합해 역할을 분리했습니다. - 가독성:
다른 코드의 for 루프는 반복 횟수를 명시적으로 보여주기 때문에 의도를 파악하기 쉽습니다.
반면, 내 코드는 while 루프에서 모든 논리를 처리하므로 직관적인 흐름을 제공합니다. - 효율성:
두 코드 모두 숫자를 하나씩 확인하므로 시간 복잡도 측면에서 큰 차이는 없습니다.
결론
두 코드는 본질적으로 동일한 작업을 수행하며, 효율성에서도 큰 차이가 없습니다.
- 가독성과 명확성을 중시한다면 다른 코드가 적합합니다.
- 단순한 루프 구조를 선호한다면 내 코드가 적합합니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 등수 매기기 (0) | 2025.01.10 |
---|---|
프로그래머스 | Python | 치킨 쿠폰 (1) | 2025.01.08 |
프로그래머스 | Python | 종이 자르기 (0) | 2025.01.06 |
프로그래머스 | Python | 다항식 더하기 (1) | 2024.12.26 |
프로그래머스 | Python | 캐릭터의 좌표 (2) | 2024.12.24 |