본문으로 이동
코드패스 by Devin.KR

문제 4596 · 바이트 I

우편함 교환 기록

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 우체국의 분류대에는 왼쪽부터 1번부터 N번까지 번호가 붙은 칸이 있다. 오늘 분류할 봉투도 정확히 N개이며, 각 봉투에는 서로 다른 정수 번호가 1번부터 N번까지 하나씩 붙어 있다. 업무를 시작할 때에는 i번 칸에 i번 봉투가 들어 있다. 칸의 번호는 분류대에 고정되어 있고, 봉투의 번호는 봉투를 따라 이동한다. 직원은 배달 순서를 맞추기 위해 두 칸의 봉투를 맞바꾸는 작업을 수행한다. 작업 기록에 두 정수 a와 b가 적혀 있으면, 그 작업을 시작하는 순간 a번 칸에 있던 봉투와 b번 칸에 있던 봉투를 서로 교환한다. 다른 칸의 봉투는 움직이지 않는다. 교환은 한 번의 작업으로 완료되므로 작업 도중의 상태를 따로 고려할 필요가 없다. 두 정수는 봉투 번호가 아니라 칸 번호를 뜻한다. 예를 들어 어떤 교환으로 1번 봉투가 다른 칸으로 이동했더라도, 다음 기록의 숫자 1은 여전히 분류대의 첫 번째 칸을 가리킨다. 따라서 각 기록은 앞선 작업을 모두 반영한 현재 배치를 기준으로 처리해야 한다. 두 칸 사이에 있는 봉투들의 순서를 뒤집거나 한 칸씩 밀어내는 작업은 수행하지 않는다. 한 기록에서 a와 b가 같을 수도 있다. 이때에는 같은 칸을 지정한 것이므로 배치가 바뀌지 않는다. 동일한 교환 기록이 여러 번 등장할 수도 있으며, 등장할 때마다 차례대로 작업을 수행한다. 교환 작업이 전혀 없을 수도 있다. 모든 작업에서 봉투를 두 칸 사이에 맞바꾸기만 하므로 각 칸에는 항상 정확히 한 개의 봉투가 들어 있다. 직원이 남긴 Q개의 교환 기록이 주어진다. 모든 기록을 순서대로 처리한 뒤, 분류대의 왼쪽 끝인 1번 칸부터 오른쪽 끝인 N번 칸까지 각 칸에 들어 있는 봉투 번호를 구해야 한다. 출력에서는 봉투가 지나온 경로나 이동 횟수를 표시하지 않고 마지막 배치만 표시한다.

입력

첫째 줄에 칸 수 N과 교환 횟수 Q가 공백으로 구분되어 주어진다. N은 1 이상 100,000 이하의 정수이고, Q는 0 이상 20,000 이하의 정수다.
다음 Q개 줄에 교환할 두 칸의 번호 a와 b가 주어진다. a와 b는 각각 1 이상 N 이하의 정수이며, 서로 같을 수도 있다.

출력

모든 교환을 마친 뒤 1번 칸부터 N번 칸까지 들어 있는 봉투 번호 N개를 공백으로 구분하여 한 줄에 출력한다.

예제 입력 1

5 3
1 4
2 4
3 3

예제 출력 1

4 1 3 2 5

예제 입력 2

1 0

예제 출력 2

1

예제 입력 3

4 4
1 4
1 4
2 3
2 3

예제 출력 3

1 2 3 4
힌트 펼치기
  • 칸 번호를 배열의 인덱스로 사용하고, 기록마다 두 원소를 교환한다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류배열구현

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)