반응형
- 문제
https://school.programmers.co.kr/learn/courses/30/lessons/81301
- 풀이
- Python
def solution(s):
change = {
0: 'zero',
1: 'one',
2: 'two',
3: 'three',
4: 'four',
5: 'five',
6: 'six',
7: 'seven',
8: 'eight',
9: 'nine'
}
for x in change.values():
if x in s:
s = s.replace(x, str([i for i, j in change.items() if j == x]))
answer = ''
for x in s:
if x != '[' and x != ']':
answer += x
return int(answer)
일단 딕셔너리 만들고 시작했다.
딕셔너리 값으로 키를 찾는 방법은
[i for i, j in change.items() if j == x]
찾는 문자가 x 라고 치면 위 방법으로 찾을 수 있다.
근데 replace를 하려면 바꿀문자가 문자여야해서 str형으로 변환해줬다.
근데 저렇게 하니까 [1]4[7][8] 이런식으로 나온다. 그래서 어쩔 수 없이 반복문으로 '[' 와 ']' 를 지워줬다.
num_dic = {
"zero": "0",
"one": "1",
"two": "2",
"three": "3",
"four": "4",
"five": "5",
"six": "6",
"seven": "7",
"eight": "8",
"nine": "9"
}
def solution(s):
answer = s
for key, value in num_dic.items():
answer = answer.replace(key, value)
return int(answer)
다른사람 풀이 보니까 아
애초에 딕셔너리 숫자부터 '' 씌워서 str형으로 넣어줬으면 됐었다.
그리고 반복문을 딕셔너리 자체로 돌려서 key값 value값 나누면 replace도 훨씬 쉽다.
너 멋있다
- JavaScript
function solution(s) {
let eng = {
'zero' : 0,
'one' : 1,
'two' : 2,
'three' : 3,
'four' : 4,
'five' : 5,
'six' : 6,
'seven' : 7,
'eight' : 8,
'nine' : 9
}
let str = '';
for (let i = 0; i < Object.keys(eng).length; i++) {
if (s.includes(Object.keys(eng)[i])) {
s = s.replaceAll(Object.keys(eng)[i], eng[Object.keys(eng)[i]]);
}
}
return parseInt(s);
}
자바스크립트도 오브젝트를 이용해서 풀었다.
다른 사람은 리스트 사용했던데 그게 더 쉬워보인다.
반응형
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - Javascript] Lv.1 모의고사 (0) | 2023.02.07 |
---|---|
[프로그래머스 - Python/JavaScript] Lv.1 폰켓몬 (0) | 2023.02.07 |
[프로그래머스 - Python] Lv.1 다트게임 (0) | 2023.02.07 |
[프로그래머스 - Python/JavaScript/Java] Lv.1 예산 (0) | 2023.02.07 |
[프로그래머스 - Python] Lv.1 신고 결과 받기 (0) | 2023.02.07 |