[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