CodingTest/Baekjoon

[baekjoon] 백준 3048번(파이썬): 개미

JunJangE 2022. 1. 20. 00:32

문제

 

3048번: 개미

T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다.

www.acmicpc.net

알고리즘

- 두 개미 그룹 중 첫 번째 그룹의 개미들이 오른쪽으로 움직인다고 생각하며 문제를 수행한다.

- t초동안 반복하고 총개미의 길이만큼 반복하여 두 개미 그룹의 위치를 확인한다.

- 두 개미 그룹이 만났다면 그 두 개미의 위치를 바꾼다.

- 이 반복은 선두 개미의 위치가 바뀌기 전까지 반복하며 선두 개미의 위치가 바뀌었다면 반복을 멈춰준다.

코드

import sys

n1, n2 = map(int, sys.stdin.readline().split())

ant1 = list(map(str,sys.stdin.readline().rstrip("\n")))
ant2 = list(map(str,sys.stdin.readline().rstrip("\n")))
t = int(sys.stdin.readline())

ant1.reverse() # 진행 방향을 바꾸기 위해
totalAnt = ant1 + ant2 # 두 개미 그룹의 위치

# t초동안 반복
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))

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com