백준 10813

jeonghens·2023년 11월 9일

알고리즘: BOJ

목록 보기
30/125

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

import sys

N, M = map(int, sys.stdin.readline().rstrip().split())

result = list(range(1, N + 1))
for i in range(M):
    loc_1, loc_2 = map(int, sys.stdin.readline().split())
    loc_1 -= 1
    loc_2 -= 1

    result[loc_1], result[loc_2] = result[loc_2], result[loc_1]

print(*result, sep=' ')

어렵진 않았다. 근데 주의할 점은 있었다.

  1. 처음엔 for문을 두 번 썼다.
    for문으로 사용자 입력을 리스트에 저장한 뒤, 다시 for문을 돌리면서 스왑했다.
    근데 굳이 메모리랑 코드를 더 짤 필요 없이 그냥 받고 바로 스왑해도 된다.

  2. 인덱싱을 할 때 항상 기준(0 또는 1)을 잘 생각해야 한다.
    틀렸던 이유 중 하나도 loc_1, loc_2 값을 그대로 썼기 때문인데, result 리스트에선 인덱스가 0부터 시작하기 때문에 기준이 0이라 loc_1, loc_2 값에서 1을 빼야 한다.

  3. 출력 양식을 잘 보자.
    처음엔 print(result)로 리스트를 출력해 놓고, 코드 잘못된 부분만 찾고 있었다.

profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글