본문 바로가기

백준/JavaScript

[JS] 백준 1차원 배열 - 네 번째 이야기

728x90

 

... 황금같은 주말이 지나갔다...(주말아 가지마...)

 

문제 풀어야지!

벌써 네 번째 이야기이다.

얼른 얼른 끝내버리자~!

 

 

문제 10813번

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

 

10813번: 공 바꾸기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이

www.acmicpc.net

 

이 문제는 어제 풀었던 코드를 조금만 수정하면 될 것 같다.

basket에는 for문을 이용하여 해당 번호의 숫자를 넣어주고, 또 for문을 사용하여 입력받은 basket 번호들을 서로 바꿔준다.

 

const fs = require('fs');
//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';
//테스트
//const readFileSyncAdress = 'input.txt';

const input = fs.readFileSync(readFileSyncAdress).toString().split('\n');
const N = Number(input[0].split(' ')[0]);
const M = Number(input[0].split(' ')[1]);

let basket=[];
for(let q=0;q<N;q++){
    basket[q]=q+1;
}

let i,j,temp;
for(let q=1;q<=M;q++){
    i=Number(input[q].split(' ')[0]);
    j=Number(input[q].split(' ')[1]);
    
    temp=basket[i-1];
    basket[i-1]=basket[j-1];
    basket[j-1]=temp;
}
console.log(basket.join(' '));

 

 

바구니에 번호를 처음 넣어줄 때와 해당 바구니들의 번호를 교환해줄 때, 인덱스를 헷갈려서 출력값이 잘못나왔지만... 다시 수정하니 결과값이 제대로 나왔다 ㅎㅎ.

 

 

 

 

문제 5597번

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

 

5597번: 과제 안 내신 분..?

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,

www.acmicpc.net

 

문제를 보니 특정값이 있는지 찾아야한다. 그래서 해당 배열에서 값을 찾는 함수가 있는지 찾아보니 includes()라는 함수가 있었다. 이 메서드는 배열의 항목에 특정값이 포함되어 있는지를 판단하여 적절히 true 또는 false를 반환한다고 한다.

 

...

 

그런데 어떻게 해야할지 감이 안 잡혀서 다른 분의 코드로 공부한 후 내가 작성해봤다.

 

const fs = require('fs');
//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';
//테스트
//const readFileSyncAdress = 'input.txt';

const input = fs.readFileSync(readFileSyncAdress).toString().split('\n').map(Number);

let x=[];

for(let i=1;i<=30;i++){
    if(input.includes(i)){
        continue;
    }
    x.push(i);
}
x.sort((a,b)=>a-b);
console.log(`${x[0]}\n${x[1]}`);

 

 

일단 1부터 30까지 숫자가 있는지 확인하고, 없으면 push()를 이용하여 x배열에 넣어줬다.

그리고 출력해줄 값들을 오름차순으로 정렬한 후 출력해주었다.

 

 

 

 

[참고] https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
https://velog.io/@dontki11it/%EB%B0%B1%EC%A4%80Node.js-5597-%EA%B3%BC%EC%A0%9C-%EC%95%88-%EB%82%B4%EC%8B%A0-%EB%B6%84

 

 

 

오늘은 여기까지 해야지~~

그럼 안녕

 

 

728x90