현대자동차에서는 부드럽고 빠른 변속이 가능한 8단 습식 DCT 변속기를 개발하여 N라인 고성능차에 적용하였다. 관련하여 SW 엔지니어인 당신에게 연속적으로 변속이 가능한지 점검할 수 있는 프로그램을 만들라는 임무가 내려왔다.
당신은 변속기가 1단에서 8단으로 연속적으로 변속을 한다면 ascending, 8단에서 1단으로 연속적으로 변속한다면 descending, 둘다 아니라면 mixed 라고 정의했다.
변속한 순서가 주어졌을 때 이것이 ascending인지, descending인지, 아니면 mixed인지 출력하는 프로그램을 작성하시오.
주어지는 숫자는 문제 설명에서 설명한 변속 정도이며, 1부터 8까지 숫자가 한번씩 등장한다.
첫째 줄에 8개 숫자가 주어진다.
첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.
1 2 3 4 5 6 7 8
ascending
이 문제가 직전에 푼 <회의실 예약> 문제랑 같은 Lv.2라는 게 믿기지 않는다.
그만큼 쉬웠고, 빨리 풀었다.
for
문을 돌면서 다음 값이 현재 값+1인지, 현재 값-1인지 체크한다.ascending
는 check
값이 7
인 경우이고descending
는 check
값이 -7
인 경우이고mixed
는 check
가 7
도 아니고 -7
도 아닌 경우다.이를 코드로 작성하면 아래와 같다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let array = [];
rl.on("line", (line) => {
line.split(" ").map((e) => array.push(Number(e)));
rl.close();
}).on("close", () => {
let check = 0;
// 다음 값이 증가하는지, 감소하는지 check
for (let i = 0; i < array.length - 1; i++) {
if (array[i + 1] === array[i] + 1) check += 1;
else if (array[i + 1] === array[i] - 1) check -= 1;
}
check === 7
? console.log("ascending")
: check === -7
? console.log("descending")
: console.log("mixed");
process.exit();
});