[Softeer] 8단 변속기 JavaScript(Node.js) 풀이
해결 순서
1. 입력을 받는다.
2. 1~8 숫자의 오름차순, 내림차순 배열을 생성한다.
3. 주어진 입력값이 오름차순 배열과 동일하면 ascending 출력, 내림차순 배열과 동일하면 descending 출력, 둘 다 아니면 mixed를 출력한다.
// 입력을 받기 위해 fs 불러오기
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
// 입력값 arr에 배열 형태로 저장
const arr = input[0].split(' ');
// 오름차순 정렬
const sortAscend = [...arr].sort();
// 내림차순 정렬
const sortDescend = [...arr].sort((a,b) => b-a)
// 주어진 입력값이 오름차순 or 내림차순과 같은지 확인하는 함수 생성
const isSame = (array) => {
for(let i=0; i<8; i++){
if(arr[i] !== array[i]) return false;
}
return true;
}
if(isSame(sortAscend)) console.log('ascending');
else if(isSame(sortDescend)) console.log('descending')
else console.log('mixed')
어려운 문제는 아니었지만 의외로 좀 걸리는 부분이 있었다.
1. 오름차순 정렬, 내림차순 정렬 만들 때 arr의 깊은 복사 사용하기. 아니면 arr 자체가 변형된다. 혹은 아예 하드코딩으로 [1, 2, 3, 4, 5, 6, 7, 8], [8, 7, 6, 5, 4, 3, 2, 1] 이렇게 만들어도 된다. 왜냐면 항상 1에서 8사이의 숫자만으로 구성된 배열이 주어질 것이기 때문!
2. 배열의 비교를 어떻게 할 것인가? 처음에 아~주 단순하게 arr === sortAscend 이런식으로 조건문을 걸었는데, 틀렸다 ㅋㅋㅋㅋㅋ 단순 비교가 안 되는구나... 그래서 그냥 true / false를 반환하는 함수를 하나 생성해서 조건을 걸었다. (개인적으로 이런 형태의 조건문을 더 선호한다.)
'코딩테스트' 카테고리의 다른 글
[Softeer] 바이러스 JavaScript(Node.js) 풀이 (0) | 2024.02.02 |
---|---|
[Softeer] 금고털이 JavaScript(Node.js) 풀이 (0) | 2024.02.02 |