문제 3982 · 비트 II
천문대 관측 칸 교환
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 천문대는 밤하늘을 관측한 결과를 N개의 칸으로 이루어진 기록표에 저장한다. 기록표의 칸에는 왼쪽부터 1번, 2번, ..., N번의 번호가 붙어 있다. 각 칸에는 해당 관측 구간에서 장비가 센 빛의 신호 수가 음이 아닌 정수 하나로 들어 있다. 신호 수가 같더라도 칸 번호가 다르면 서로 다른 위치의 기록이다. 관측을 마친 뒤 담당자는 기록을 옮기는 과정에서 두 칸의 값을 서로 바꾸어 적었다는 사실을 확인했다. 교정 장치에는 값을 교환해야 하는 칸 번호 A와 B가 전달된다. 담당자는 현재 기록표의 A번 칸에 들어 있는 값을 B번 칸으로 옮기고, 현재 B번 칸에 들어 있는 값을 A번 칸으로 옮겨 기록을 바로잡으려 한다. 이 작업은 두 값을 한 번에 맞바꾸는 작업이다. 두 칸 중 한쪽의 값을 다른 쪽에 복사한 다음 원래 값을 잃어버려서는 안 된다. A번과 B번을 제외한 모든 칸의 값은 현재 기록 그대로 유지한다. 교정 작업은 한 번만 수행하며, 값을 크기순으로 정렬하거나 칸의 순서를 바꾸는 작업은 하지 않는다. 교정 장치는 확인만 필요한 경우에도 같은 형식의 명령을 보낼 수 있다. 따라서 A와 B가 같을 수도 있다. 두 번호가 같으면 해당 칸을 포함한 모든 칸의 값이 그대로 유지된다. 서로 다른 두 칸의 값이 우연히 같은 경우에도 교환 후 기록표의 값들은 교환 전과 같아진다. 현재 기록표의 값들과 두 칸 번호가 주어질 때, 교정 작업을 마친 기록표를 구하는 프로그램을 작성한다. 출력할 때는 칸 번호가 작은 것부터 순서대로 모든 값을 나열한다. 값이 0인 칸도 생략하지 않으며, 기록표의 칸 수는 교정 전후에 동일하다.
입력
첫째 줄에 칸 수 N이 주어진다. 둘째 줄에 현재 기록표의 값 V_1, V_2, ..., V_N이 공백으로 구분되어 주어진다. 셋째 줄에 교환할 두 칸 번호 A와 B가 주어진다. 모든 입력값은 정수이며, 1 ≤ N ≤ 1,000, 0 ≤ V_i ≤ 1,000,000, 1 ≤ A, B ≤ N이다.
출력
교정 후의 1번 칸부터 N번 칸까지의 값을 한 줄에 공백으로 구분하여 출력한다. A와 B가 같으면 입력된 기록표를 그대로 출력한다.
예제 입력 1
5 12 0 37 8 21 2 5
예제 출력 1
12 21 37 8 0
예제 입력 2
3 9 4 9 2 2
예제 출력 2
9 4 9
예제 입력 3
1 0 1 1
예제 출력 3
0
힌트 펼치기
- 입력의 칸 번호는 1부터 시작한다.
- 한쪽 값을 덮어쓰기 전에 두 칸의 원래 값을 보존한다.
관련 서재 장
알고리즘 분류
배열구현풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |