반응형
백준 10810번 공 바꾸기 (javascript, node.js)
문제
- 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 들어있다.
- 도현이는 앞으로 M번 공을 바꾸려고 한다. 도현이는 공을 바꿀 바구니 2개를 선택하고, 두 바구니에 들어있는 공을 서로 교환한다.
- 공을 어떻게 바꿀지가 주어졌을 때, M번 공을 바꾼 이후에 각 바구니에 어떤 공이 들어있는지 구하는 프로그램을 작성하시오.
입력
- 첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.
- 둘째 줄부터 M개의 줄에 걸쳐서 공을 교환할 방법이 주어진다. 각 방법은 두 정수 i j로 이루어져 있으며, i번 바구니와 j번 바구니에 들어있는 공을 교환한다는 뜻이다. (1 ≤ i ≤ j ≤ N)
- 도현이는 입력으로 주어진 순서대로 공을 교환한다.
출력
- 1번 바구니부터 N번 바구니에 들어있는 공의 번호를 공백으로 구분해 출력한다.
예제입력 1
5 4
1 2
3 4
1 4
2 2
예제출력 1
3 1 4 2 5
문제풀이
- 10810번과 비슷한 문제
- 주어진 입력값(첫번째줄 빼고) i번 바구니와 j번 바구니를 바꿔주면 됨
//10813번
//공 바꾸기
// 바구니 두개를 선택해서 바꿔주기
// 배열 변환 방법[arr1, arr2] = [arr2, arr1]
const fs = require('fs');
const file = process.platform === 'linux' ? 'dev/stdin' : './text.txt';
const input = fs.readFileSync(file).toString().trim().split('\n');
const n = Number(input[0].split(' ')[0]);
const m = input[0].split(' ')[1];
// 바구니 를 1번 부터 5번까지 배열로 생성
let basket = new Array(n).fill().map((v,i) => i+1);
for(i=1; i <= m ; i++){
const basketNum = input[i].split(' ').map(Number);
// i번 바구니
num1 = basketNum[0];
// j번 바구니
num2 = basketNum[1];
// i번 바구니와 j번 바구니 바꿔주기
[basket[num1-1], basket[num2-1]] = [basket[num2-1], basket[num1-1]];
}
console.log(basket.join(" "));
'Algorithm_javascript > 4. 1차원 배열' 카테고리의 다른 글
백준 3052번 나머지(javascript, node.js) (0) | 2023.05.18 |
---|---|
# 백준 5597번 과제 안 내신 분..? (javascript, node.js) (0) | 2023.05.18 |
백준 10810번 공 넣기 (javascript, node.js) (0) | 2023.05.18 |
백준 2562번 최댓값 (javascript, node.js) (0) | 2023.05.18 |
백준 10818번 최소, 최대 (javascript, node.js) (0) | 2023.05.15 |