Stay Hungry Stay Foolish

SWEA

[SWEA] 4676. 늘어지는 소리 만들기 (Python/D3)

dev스카이 2024. 11. 4. 21:23

[문제 링크] 👇

 

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)}")

 

 

👩‍💻 회고

하이픈을 뒤에서부터 추가하면 된다니.. 완전 간단한 방법이 있었다. 약간 아쉽다.