백준 3048 개미
https://www.acmicpc.net/problem/3048
3048번: 개미
T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다.
www.acmicpc.net
코드
메모리 30616KB | 시간 44ms | 코드길이 489B
import sys
N1, N2 = map(int, sys.stdin.readline().rstrip().split())
ant_L = list(map(str, sys.stdin.readline().rstrip()))
ant_L.reverse()
ant_R = list(map(str, sys.stdin.readline().rstrip()))
T = int(sys.stdin.readline().rstrip())
ant = ant_L + ant_R
for _ in range(T):
for i in range(N1+N2-1):
if ant[i] in ant_L and ant[i+1] in ant_R:
ant[i], ant[i+1] = ant[i+1], ant[i]
if ant[i+1] == ant_L[-1]:
break
print("".join(ant))
왼쪽 개미가 ant_L이고, 오른쪽 개미가 ant_R 일 경우에 둘을 바꾸어 주는 것만 꼬옥 기억해주면 되는 문제입니다.
주의할 점은 사이클 한번 돌린 뒤의 처리인데요.
마지막 if문에서 바꾼 개미가 맨 앞 개미라면 멈추게 하는 코드가 그 처리입니다.
Search 🔍
- 리스트를 반대로 정렬해주는 list.reverse() 함수를 검색해보았습니다.
- 마지막 if문은 구글링으로 알아냈습니다. 어디서 멈춰야 할지 그 포인트를 알았다면 좋았을 것 같습니다.
- 출력 줄을 검색했습니다.
리스트를 띄어쓰기 없이 출력하려면 print("".join(list)) 를 사용해야 합니다.
따옴표 안에 들어가는 문자열은 구분자입니다.
list = ['a' , 'b' , 'c']
print("".join(list)) # abc
print("_".join(list)) # a_b_c
print(", ".join(list)) # a, b, c
후기
마지막 if문은 구글링해서 알았다고 했는데요, 그 줄만 제외하면 정답을 올려주신 블로거분과 코드가 완전히 일치하더라고요. 뭔가.. 신기했습니다. 여러 문제를 풀다보니 어떻게 정답코드를 짜야할지 저도 모르는 새에 감이 온건지.. 뿌듯합니다. 앞으로도 열심히 하겠습니다.
'코딩테스트' 카테고리의 다른 글
[백준] 8911 거북이 - python (2) | 2023.01.29 |
---|---|
[백준] 16131 기숙사 서바이벌 (Dormvival Games) - python (2) | 2023.01.28 |
[백준] 2870 수학숙제 - python (1) | 2023.01.27 |
[백준] 1244 스위치 켜고 끄기 - python (1) | 2023.01.27 |
[백준] 8896 가위 바위 보 - python (3) | 2023.01.26 |