SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 문제 설명
단어의 중간에 ‘-’(하이픈)을 넣어 늘어지는 소리를 표현해보자.
예를 들어 “wow”같은 문자열에서 두 번째 문자 ‘o’의 뒤편에 두 개의 하이픈을, 세 번째 문자 ‘w’의 뒤편에 한 개의 하이픈을 넣는다고 해보자. 그러면 문자열은 “wo--w-“가 될 것이다.
알파벳 소문자로 이루어진 문자열과 어떤 문자의 뒤편에 하이픈을 넣을 지 여부가 주어질 때 하이픈을 모두 넣고 나면 문자열이 어떻게 되는지 출력하는 프로그램을 작성하라.
[입력]
첫 번째 줄에 테스트 케이스의 수 T(T ≤ 1000)가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 길이가 1이상 20이하인 문자열이 주어진다. 이 문자열은 알파벳 소문자만으로 이루어져 있다. 이 문자열의 길이를 L이라고 하자.
두 번째 줄에는 몇 개의 하이픈을 넣을지를 의미하는 자연수 H(1 ≤ H ≤ 100)이 주어진다.
세 번째 줄에는 하이픈을 넣을 위치를 의미하는 H개의 0이상 L이하인 정수가 공백으로 구분되어 주어진다.
예를 들어 주어진 문자열이 “abc”이고 하이픈을 넣을 위치가 0이라면 “-abc”가 되고, 문자열이 “abc”이고 하이픈을 넣을 위치가 2이라면 “ab-c“가 된다.
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 주어진 문자열에 하이픈을 넣어서 출력한다.
2. 코드
특별히 어려운 부분은 없었습니다. 하이픈(-)을 추가시킬 각 위치들의 합을 가진 배열을 만들고, 뒤쪽부터 하이픈을 추가하며 인덱스가 틀어지는 것을 방지하였습니다.
아래가 작성한 코드입니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
T = int(input())
for tc in range(1, T+1):
sound = list(input())
H = int(input())
location = list(map(int, input().split()))
# -을 추가할 위치를 세는 배열 생성
location_cnt = [0]*(len(sound)+1)
for n in location:
location_cnt[n] += 1
# 뒤쪽부터 -을 추가
for i in range(len(location_cnt)-1, -1, -1):
if location_cnt[i]:
sound.insert(i, '-'*location_cnt[i])
# join을 통해 다시 합해서 출력
print('#{} {}'.format(tc,''.join(sound)))
|
'python' 카테고리의 다른 글
| [모의 SW 역량테스트] 홈 방범 서비스 Python (SW Expert Academy) (0) | 2020.03.11 |
|---|---|
| 최솟값으로 이동하기 Python (SW Expert Academy) (0) | 2020.03.11 |
| 올림픽 종목 투표 Python (SW Expert Academy) (0) | 2020.03.11 |
| 자기 방으로 돌아가기 Python (SW Expert Academy) (0) | 2020.03.11 |
| [모의 SW 역량테스트] 특이한 자석 Python (SW Expert Academy) (0) | 2020.03.09 |