728x90
난이도 : Lv. 1
풀이일 : 2505283
https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
아이디어
- 각 숫자와 영단어를 묶어 딕셔너리에 저장하자
- 0부터 9까지 딕셔너리를 돌며 현재 숫자가 s에 문자열로 저장되어 있을 시 숫자로 바꿔주자
- 숫자형으로 형변환한 s를 출력하자
풀이 코드
def solution(s):
nums = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four',
5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'}
for i in range(10):
if nums[i] in s:
s = s.replace(nums[i], str(i))
return int(s)
- nums : 각 숫자와 숫자의 영단어 쌍을 저장할 딕셔너리
- for 반복문 : 0부터 9까지 문자열로 저장되어 있으면 변환
- return : 숫자형으로 변환한 s 출력
실행 결과
개선 코드
def solution(s):
nums = {'zero': '0', 'one': '1', 'two': '2', 'three': '3',
'four': '4', 'five' : '5', 'six': '6', 'seven': '7',
'eight': '8', 'nine': '9'}
for word, num in nums.items():
s = s.replace(word, num)
return int(s)
- 딕셔너리 안에 저장되는 키-값 순서를 변환하고, 숫자를 문자 형태로 추가했다.
- for 반복문에서 딕셔너리 내부 모든 요소를 순회하며, s에 숫자 영단어가 있으면 해당되는 숫자로 바꿔준다.
실행 결과
배운점
- 딕셔너리.items()를 오랫동안 쓰지 않아서 잊고 있었는데 개선할 부분을 찾다가 새로 배웠다. 역시 이래서 안 풀던 방식으로 풀려고 노력해야 하나보다
느낀점
- 여러 방식으로 풀면 실행 결과에서 시간, 메모리 비교하는 게 재밌는데 쉬운 문제들은 크게 차이가 나지 않는 경우가 많은 것 같다. 좀 더 복잡한 문제 풀어봐야지
'알고리즘 > Lv. 1' 카테고리의 다른 글
프로그래머스 155652 둘만의 암호 파이썬 풀이 (0) | 2025.06.10 |
---|---|
프로그래머스 142086 가장 가까운 같은 글자 파이썬 풀이 (1) | 2025.06.04 |
프로그래머스 131128 숫자 짝꿍 파이썬 풀이 (1) | 2025.05.27 |
프로그래머스 42576 완주하지 못한 선수 파이썬 풀이 (0) | 2025.05.24 |
프로그래머스 82612 부족한 금액 계산하기 파이썬 풀이 (0) | 2025.05.23 |