Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Queue
- dfs
- OCR
- 정렬
- JavaScript
- flask
- Dinosaur
- Nest.js
- react
- 자료구조
- 게임
- nodejs
- cookie
- TypeScript
- Sequelize
- nestjs
- GIT
- AWS
- MySQL
- mongoose
- MongoDB
- typeORM
- jest
- Bull
- Express
- Python
- 공룡게임
- class
- game
Archives
- Today
- Total
포시코딩
[프로그래머스][Lv.1] 숫자 문자열과 영단어 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/81301
내 풀이
def solution(s):
answer = ''
numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
word = ''
for e in s:
if e.isdigit():
answer += str(e)
continue
word += e
if word in numbers:
answer += str(numbers.index(word))
word = ''
return int(answer)
과거의 나였으면 저 number list를 dictionary로 구현했을 것이다. ex) {'zero': 0, 'one': 1, ...}
마찬가지로 비슷한 문제의 다른 풀이 방법에서 본걸 기억해내 써먹었다.
- isdigit()
- if - in 문
- list.index(x)
이 세가지 방법도 마찬가지로 어디선가 봤던걸 활용해낸건데 아주 잘 써먹혔다.
역시 꾸준히 문제를 푸니까 이쪽으로 머리가 잘 굴러가는 것 같다.
하지만 착각은 하지말자 겨우 레벨1에 정답률도 67%나 되는 쉬운 문제다.
다른 풀이
def solution(s):
words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
for i in range(len(words)):
s = s.replace(words[i], str(i))
return int(s)
역시 자만하면 안됐었다.
replace를 활용하는 방법을 생각하지 못했는데
이 문제를 보다가 저렇게 range(len(words))로 index만 구해 쓰는거보다 enumerate를 하는게 더 낫지 않나 라는 생각이 들었다.
그래서 내가 직접 다시 풀어보았다.
내 풀이+
def solution(s):
numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
for i, v in enumerate(numbers):
s = s.replace(v, str(i))
return int(s)
훨씬 깔끔해졌다.
문득 가독성이 좋아진것과 별개로 성능에서도 차이가 있는지 궁금해졌는데
직접 실험을 통해 한 번 알아봤다. - [enumerate(list)와 range(len(list)) 비교]
예전에 풀었던 경험이 점점 밑거름이 되어 다음 문제를 풀 때 계속 도움을 주는
선순환이 반복되고 있는데 이 흐름을 멈추지말고 아직도 많이 남은 Lv.0 ~ Lv.1 문제를 빨리 다 풀고
Lv.2를 향해 나아가야겠다.
728x90
'자료구조알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스][Lv.0] 점의 위치 구하기 (0) | 2022.12.27 |
---|---|
[프로그래머스][Lv.0] 짝수의 합 (0) | 2022.12.25 |
[프로그래머스][Lv.1][정렬] K번째수 (0) | 2022.12.25 |
[프로그래머스][Lv.1] 행렬의 덧셈 (0) | 2022.12.25 |
[프로그래머스][Lv.1] 나누어 떨어지는 숫자 배열 (0) | 2022.12.24 |