본문 바로가기
코딩 테스트/프로그래머스

[프로그래머스 - Python/JavaScript] Lv.1 숫자 문자열과 영단어

by 오엥?은 2023. 2. 7.
반응형
  • 문제

https://school.programmers.co.kr/learn/courses/30/lessons/81301

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 풀이 

- 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);
}

자바스크립트도 오브젝트를 이용해서 풀었다.

다른 사람은 리스트 사용했던데 그게 더 쉬워보인다. 

반응형