- [Python] 점프 투 파이썬_종합문제_Q13_DashInsert 함수2021년 12월 09일 10시 41분 08초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
문제
점프 투 파이썬 Q13 문제의 지문은 다음과 같다.
Q13 DashInsert 함수
DashInsert 함수는 숫자로 구성된 문자열을 입력받은 뒤 문자열 안에서 홀수가 연속되면 두 수 사이에 - 를 추가하고, 짝수가 연속되면 * 를 추가하는 기능을 갖고 있다. DashInsert 함수를 완성하시오.
입력 예시: 4546793
출력 예시: 454*67-9-3
작성 코드
아래는 Q13 문제를 해결하기 위해 작성한 코드이다.
def DashInsert(s): # 완성한 DashInsert함수 # 입력된 문자열 값을 lst 리스트로 변환 lst = [] for i in s: lst.append(i) print(lst) # lst 리스트 값을 문제의 요구에 따라 rst 리스트에 추가 rst = [] for i in range(len(lst)-1): # 'list index out of range' 에러를 방지하기 위해 -1함 if int(lst[i]) % 2 == 0 and int(lst[i+1]) % 2 == 0: # 짝수가 연속될 때 rst.append(lst[i]) rst.append('*') elif int(lst[i]) % 2 != 0 and int(lst[i+1]) % 2 != 0: # 홀수가 연속될 때 rst.append(lst[i]) rst.append('-') else: rst.append(lst[i]) # 홀짝 또는 짝홀 순일 때 rst.append(lst[-1]) # 'list index out of range' 에러를 방지하기 위해 -1했던 for문에서 누락되었던 lst리스트의 마지막 값을 rst에 추가 return ''.join(rst) s = '4546793' # 입력값 print(DashInsert(s)) # DashInsert함수 호출
문제와 해결
처음에는 insert를 이용해 lst 리스트의 해당 주소에 * 또는 - 를 끼워 넣을 생각이었다.
그래서 for 문을 다음과 같이 작성했었다.
for i in range(len(lst)): if lst[i] != '*' and lst[i] != '-' and int(lst[i]) % 2 == 0 and int(lst[i+1]) % 2 == 0: lst.insert(i+1, '*') elif lst[i] != '*' and lst[i] != '-' and int(lst[i]) % 2 != 0 and int(lst[i+1]) % 2 != 0: lst.insert(i+1, '-')
문제는 * 와 - 가 추가된 lst 리스트의 길이가 for 문에 반영되지 않다보니,
다음과 같이 출력 값의 93 사이에는 - 가 적용되지 않았다.
454*67-93
이 문제를 해결하기 위해 rst 라는 새로운 리스트에 append하는 방식으로 변경했다.
728x90반응형'CS > 코딩 테스트' 카테고리의 다른 글
[Python] 점프 투 파이썬_종합문제_Q15_Duplicate Numbers (0) 2021.12.10 [Python] 점프 투 파이썬_종합문제_Q14_문자열 압축하기 (0) 2021.12.09 [알고리즘][파이썬] 백준_1018_체스판 다시 칠하기 (0) 2021.12.07 [알고리즘][파이썬] 백준_7568_덩치 (0) 2021.12.05 [알고리즘][파이썬] 백준_2231_분해합 (0) 2021.12.03 댓글