ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค [lv1] ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด ํŒŒ์ด์ฌ

2021. 7. 21. 00:04ใ†๐Ÿ”ฑ Algorithm

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

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด

๋„ค์˜ค์™€ ํ”„๋กœ๋„๊ฐ€ ์ˆซ์ž๋†€์ด๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์—๊ฒŒ ์ˆซ์ž๋ฅผ ๊ฑด๋„ฌ ๋•Œ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พผ ์นด๋“œ๋ฅผ ๊ฑด๋„ค์ฃผ๋ฉด ํ”„๋กœ๋„๋Š” ์›๋ž˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ˆซ์ž์˜ ์ผ๋ถ€ ์ž

programmers.co.kr

 

โœ… ์ ‘๊ทผ

  • ๋ฌธ์ž์—ด s ๋ฅผ deque ๋กœ ๋งŒ๋“ค์–ด, ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ์•ž ๊ธ€์ž๋ถ€ํ„ฐ popleft() ํ•ฉ๋‹ˆ๋‹ค. popleft() ๋œ ๊ธ€์ž๋ฅผ i ๋ผ ํ•ฉ๋‹ˆ๋‹ค.
  • i ๊ฐ€ ์ˆซ์ž์ผ ๋•Œ์™€ ๋ฌธ์ž์ผ ๋•Œ๋ฅผ ๊ตฌ๋ถ„์ง€์–ด ๋ถ„๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๊ตฌ๋ถ„ ๋ฐฉ๋ฒ•์€ isdigit() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • i ๊ฐ€ ๋ฌธ์ž์ผ ๋•, ์ด์ „์˜ i์™€ ์ด์–ด๋ถ™์—ฌ ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ alphabet ์˜ key ๊ฐ’์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์กด์žฌํ•  ๊ฒฝ์šฐ, ํ•ด๋‹น key ์˜ value ๋กœ ์น˜ํ™˜ํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.
from collections import deque


def solution(s):
    alphabet = {
        'zero': "0",
        'one': '1',
        'two': '2',
        'three': '3',
        'four': '4',
        'five': '5',
        'six': '6',
        'seven': '7',
        'eight': '8',
        'nine': '9',
    }
    alphabet = []
    s = deque(s)
    answer = ''
    temp = ''

    while s:
        i = s.popleft()
        if i.isdigit():
            answer += i

        else:
            temp += i
            if temp in alphabet:
                answer += alphabet[temp]
                temp = ''

    return int(''.join(answer))

 

 

โœ… ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• - replace() ๋ฉ”์„œ๋“œ 

replace() ๋ฅผ ์ด์šฉํ•œ, ๊ต‰์žฅํžˆ pythonic ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด s ๋ฅผ ๊ธฐ์ค€์œผ๋กœ for ๋ฌธ์„ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์—ญ์œผ๋กœ num_dic ์˜ items ๋ฅผ ๊ธฐ์ค€์œผ๋กœ for ๋ฌธ์„ ๋Œ๋ฆฝ๋‹ˆ๋‹ค.

replace() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, num_dic ์˜ key ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ๊ณผ ์น˜ํ™˜์ด ๋™์‹œ์— ๊ฐ€๋Šฅํ•˜๊ธฐ์—,

์ž‘์„ฑํ•  ์ฝ”๋“œ์˜ ์–‘์ด ์ƒ๋‹นํžˆ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

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)