-
[Python] 1926: 간단한 369게임코딩테스트/SWEA 2024. 11. 14. 09:58
https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&problemLevel=3&contestProbId=AV5PTeo6AHUDFAUq&categoryId=AV5PTeo6AHUDFAUq&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=1
요구사항
- Python 4초
- 10 <= N < 1000 충분충분
- 메모리 256
- 게임 규칙에 맞게 출력하는 프로그램을 작성하라
설계
- 3 or 6 or 9의 개수를 count 해서 상황에 맞게 출력해주자.
구현
n = int(input()) for i in range(1, n + 1): count = 0 for j in str(i): if j == "3" or j == "6" or j == "9": count += 1 clap = count * '-' if (count != 0): print(clap ,end=' ') else: print(i, end=' ')리팩토링
- 블로그 작성하면서 파이썬의 count 메서드를 제공해주지 않나? 라는 생각이 들어 한번 시도해보겠다.
n = int(input()) for i in range(1, n + 1): clap = str(i).count('3' or '6' or '9') print(clap) // 입력 3 // 출력 0 0 1- 하지만 이 경우 2자리 이상일 때 count 를 한 번 하게 된다.
n = int(input()) for i in range(1, n + 1): clap = str(i).count('3') clap += str(i).count('6') clap += str(i).count('9') if clap != 0: print(clap *'-', end=' ') else: print(i, end=' ')- 뭔가 이것도 str(i)가 반복되니 반복문으로 넣어주면 최적화는 모르겠지만, 가독성은 좋아질 거 같다.
- 최적화는 모르겠는 이유는 한번 더 순회하면서 검사하는 게 시간 복잡도 측면에서 count 메서드보다 나을 지 모르겠기 때문이다.
리팩토링 2
GPT는 어떻게 풀 지 궁금해서 물어보았다.
n = int(input("숫자를 입력하세요: ")) for i in range(1, n + 1): clap_count = sum(1 for j in str(i) if j in '369') # 각 숫자에 대해 '3', '6', '9'의 개수를 세기 if clap_count > 0: print('-' * clap_count, end=' ') # '3', '6', '9'가 있으면 '-'를 개수만큼 출력 else: print(i, end=' ') # 없으면 숫자 그대로 출력'코딩테스트 > SWEA' 카테고리의 다른 글
[SWEA] 1954: 달팽이 (0) 2024.11.13 [SWEA] 1859. 백만 장자 프로젝트 (5) 2024.11.12 - Python 4초