[Python] 코딩 도장 - Dash Insert

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: Dash Insert] - Lv.1

DashInsert 함수는 숫자로 구성된 문자열을 입력받은 뒤,

문자열 내에서 홀수가 연속되면 두 수 사이에 - 를 추가하고, 짝수가 연속되면 * 를 추가하는 기능을 갖고 있다.

(예, 454 => 454, 4546793 => 454*67-9-3) DashInsert 함수를 완성하자.

입력 - 화면에서 숫자로 된 문자열을 입력받는다.

"4546793"

출력 - *, -가 적절히 추가된 문자열을 화면에 출력한다.

"454*67-9-3"

출처: https://codingdojang.com/scode/529?answer_mode=hide


[풀이]

a = input("숫자를 입력하세요: ")
b = ""

for i in range(len(a)-1):
    if (int(a[i]) % 2 == 0) & (int(a[i+1]) % 2 == 0):
        b = b + a[i] + "*"
    elif (int(a[i]) % 2 == 1) & (int(a[i+1]) % 2 == 1):
        b = b + a[i] + "-"
    else:
        b = b + a[i]
        
    if i == (len(a)-2):
        b = b + a[i+1]

print(b)
숫자를 입력하세요: 4546793
454*67-9-3

for문으로 단순하게 직관적으로 풀었다.


[추천 풀이]

import re
print(re.sub(r'(([02468]{2,})|([13579]{2,}))', 
             lambda x:'*'.join(x.group(2)) if x.group(2) else '-'.join(x.group(3)), 
             input(":")))
:4546793
454*67-9-3

다른 분이 푸신 풀이 중 추천수가 많은 풀이이다.

정규식을 이용해 푸셨는데 하나씩 뜯어 보았는데 사실 이해가 잘 안된다.

날 잡아서 정규식을 정리해야겠다..

Leave a comment