티스토리 뷰

자바스크립트는 C++과 달리 화이트 스페이스로 잘라서 하나씩 받아오는 기능이 없고 입력을 한 번에 다 읽어 와서 input에  넣게 됩니다.

/*
boj.kr/4344

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
*/

const fs = require('fs');
let input = fs.readFileSync('./input.txt').toString();
console.log(input);

//출력
5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

input에 문자가 다 들어 있기 때문에 우리가 직접 입력 받은 것을 코딩하기 편하게 잘 정제해서 써 주어야 하는데, 위 문제 같은 경우에는 줄별로 입력을 나누어 주는 것이 좋습니다.

input = input.split('\n');
console.log(input);

//출력
'5'
'5 50 50 70 80 100'
'7 100 95 90 80 70 60 50'
'3 70 90 80'
'3 70 90 81'
'9 100 99 98 97 96 95 94 93 91'

input이 문자열이기 때문에 줄바꿈 키워드로 이 문자열을 나누면 각각 줄별로 문자가 들어가게 됩니다. 줄을 기준으로 나눠 주기 위해서 split 메소드를 써서 줄바꿈 기준으로 문자를 잘라서 배열로 만들어 줍니다. 출력을 해 보면 각각 배열의 원소로 들어가는 것을 볼 수 있습니다.

const testCasdNum = Number(input[0]);
console.log('testCasdNum : ', testCasdNum);

//출력(터미널에서 노란색은 숫자, 하얀색은 문자)
5 숫자

첫 번째 값이 의미하는 것은 테스트케이스 숫자입니다.

첫 번째 숫자를 testCaseNum에 넣어주어야 하는데 input 배열의 첫 번째 원소가 testCaseNum을 의미하는데 이것을 넣어줄 때 그냥 input[0]이라고 넣어 주면 첫 번째 값에 input[0]의 값이 문자 5이기 때문에 문자가 들어가게 됩니다.

여기는 숫자를 넣어야 되는데 문자를 넣게 되면 제대로 동작하지 않기 때문에 이 문자인 값을 숫자로 바꿔주는 동작을 해 주어야 합니다. 가장 대표적인 것이  Number라는 것으로 감싸주면 testCaseNum이 숫자로 출력되는 것을 볼 수 있습니다.

const testCasdNum = +input[0];
console.log('testCasdNum : ', testCasdNum);

//출력(터미널에서 노란색은 숫자, 하얀색은 문자)
5 숫자

자바스크립트에서 앞에 + 단항 연산자를 써주면 이 뒤에 있는 타입이 숫자가 아니면 암시적으로 숫자로 바꾸어 줍니다. 그래서 Number를 붙였을 때와 같은 결과를 보여줍니다. Number를 씌우는게 귀찮다면 +를 붙이는 것도 좋은 방법입니다.

for (let i = 1; i <= testCaseNum; i++) {
	const arr = input[i].split(' ').map((item) => +item);
    console.log('arr : ', arr);
}

//출력
arr : ['5', '50', '50', '70', '80', '100']

 그리고 다음에 필요한 뒤에 입력들은 입력을 잘 만들어 주어야 합니다. 첫 번째에 있는 숫자 5는 이 뒤에 배열의길이를 의미하기 때문에 따로 분리를 해주어야 하고 뒤에 있는 문자들도 각각 숫자로 바꾸어야 하기 때문에 이 값들도 공백으로 분리를 해 주어야 합니다. split으로 공백을 기준으로 분리하게 되면 각각의 요소가 배열에 들어가게 됩니다. 그런데 여기서는 지금 각각의 원소들이 문자열로 되어 있고 우리가 필요한 것은 숫자이기 때문에 숫자로 다 바꾸어 주어야 합니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함