<문제>

https://www.acmicpc.net/problem/3048

 

<풀이>

import sys
N1, N2 = list(map(int, sys.stdin.readline().split()))

ant1 = list(sys.stdin.readline().strip())
ant2 = list(sys.stdin.readline().strip())
T = int(sys.stdin.readline())

ant1.reverse()
totalAnt = ant1 + ant2

for _ in range(T):
    for i in range(len(totalAnt) -1):
        if totalAnt[i] in ant1 and totalAnt[i+1] in ant2:
            totalAnt[i], totalAnt[i+1] = totalAnt[i+1], totalAnt[i]
        
            if totalAnt[i+1] == ant1[-1]:
                break

print(''.join(totalAnt))

 

- ant1의 요소와 ant2의 요소가 왼쪽 오른쪽으로 정렬되어 있어야 (둘이 만나야) 순서를 바꿈

- 전체 줄에서 idx를 하나씩 올려가며 i, i+1을 비교

- 왼쪽에서 오른쪽으로 가는 ant1의 첫번째 요소가 (ant1[-1]) 순서를 바꿨을 때가 최종순서를 바꾼 형태가 되어서 break가 되어야 함

'TIL > [파이썬] 1일 1코테' 카테고리의 다른 글

열심히 일하는 중_백준31860  (0) 2025.02.23
세준세비_백준1524  (0) 2025.02.19
[정렬] 좌표압축_백준18870  (0) 2025.02.18
[정렬] H-Index_프로그래머스  (0) 2025.02.17
파일 정리_백준20291  (0) 2025.02.17

+ Recent posts