[문제 링크] 👇
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
💡 주의할 점 : 하이픈을 넣은 후에 기존 문자열 위치 변동
하이픈을 삽입하는 방법
str.insert(i, x)
- str 문자열의 i 위치 앞에 x 를 삽입한다.
Solution
T = int(input()) # 테스트 케이스 수
for test_case in range(1, T + 1):
word = list(input().strip()) # 문자열
h = int(input()) # 하이픈 개수
hyphen = sorted(list(map(int, input().split()))) # 하이픈 위치 정렬
for i in range(h):
word.insert(hyphen[i], '-') # 하이픈 넣기
for j in range(i + 1, h): # 다음 하이픈들의 위치를 증가시킴
hyphen[j] += 1
print(f"#{test_case} {''.join(word)}")
개선할 점
위 코드에선 insert 메서드를 사용해 하이픈을 삽입할 때, 인덱스 조정이 불필요한 반복 작업을 발생시키고 있다. 이 문제를 해결하려면 하이픈을 삽입할 위치를 오른쪽에서 왼쪽으로 진행하면 인덱스 조정을 피할 수 있다.
개선된 코드
T = int(input()) # 테스트 케이스 수
for test_case in range(1, T + 1):
word = list(input().strip()) # 문자열
h = int(input()) # 하이픈 개수
hyphen = list(map(int, input().split())) # 하이픈 위치
# 하이픈 위치를 오른쪽에서 왼쪽 순서로 처리
for idx in sorted(hyphen, reverse=True):
word.insert(idx, '-')
print(f"#{test_case} {''.join(word)}")
👩💻 회고
하이픈을 뒤에서부터 추가하면 된다니.. 완전 간단한 방법이 있었다. 약간 아쉽다.
'SWEA' 카테고리의 다른 글
[SWEA] 20551. 증가하는 사탕 수열 (Python/D3) (0) | 2024.11.08 |
---|---|
[Programmers] L1. 기사단원의 무기 (Python) (2) | 2024.11.07 |
[SWEA] 12004. 구구단 1 (Python/D3) (0) | 2024.11.04 |
[SWEA] 4299. 태혁이의 사랑은 타이밍 (Python/D3) (0) | 2024.11.04 |
[SWEA] 15230. 알파벳 공부 (Python/D3) (0) | 2024.11.04 |