티스토리 뷰
자바스크립트는 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
- redux middleware
- find
- 동적(dynamic) 언어
- redux-middleware
- 얕은복사
- some
- redux thunk
- foreach
- EVERY
- findindex
- null
- redux-thunk
- 기본형 데이터
- 참조형 데이터
- 비교 연산자
- 타입변환
- 느슨한 타입(loosely typed)
- filter
- 불변 객체
- undefined
- redux
- map
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |