본문 바로가기

공부기록/Python

점프투파이썬 종합문제 Q13 DashInsert

DashInsert 함수

DashInsert 함수는 숫자로 구성된 문자열을 입력받은 뒤 문자열 안에서 홀수가 연속되면 두 수 사이에 - 를 추가하고, 짝수가 연속되면 * 를 추가하는 기능을 갖고 있다. DashInsert 함수를 완성하시오.

입력 예시: 4546793
출력 예시: 454*67-9-3
def DashInsert(data):
    numbers = list(map(int, data))   # 숫자 문자열을 숫자 리스트로 변경
    result = []

    for i, num in enumerate(numbers):
        result.append(str(num))
        if i < len(numbers)-1:                   # 다음 수가 있다면
            is_odd = num % 2 == 1                # 현재 수가 홀수
            is_next_odd = numbers[i+1] % 2 == 1  # 다음 수가 홀수
            if is_odd and is_next_odd:           # 연속 홀수
                result.append("-")
            elif not is_odd and not is_next_odd: # 연속 짝수
                result.append("*")

    print("".join(result))                       # 리스트를 문자열로

map(function, iterable data) : 입력받은 iterable data의 각 요소에 함수 f를 적용한 결과를 묶어서 돌려준다. 

 

enumerate(순서가 있는 자료형) : 리스트, 튜플, 문자열 등 순서가 있는 자료형을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 돌려준다.

 

 

원본 문자열 사이사이에 '*', '-' 를 넣는 방법보다 빈 리스트를 새로 생성해서, 채워나가는 방법이 더 간단하다.