[소프티어] 8단 변속기 | JavaScript

예구·2023년 8월 7일
0

Softeer

목록 보기
6/13
post-thumbnail

문제출처

1. 문제

현대자동차에서는 부드럽고 빠른 변속이 가능한 8단 습식 DCT 변속기를 개발하여 N라인 고성능차에 적용하였다. 관련하여 SW 엔지니어인 당신에게 연속적으로 변속이 가능한지 점검할 수 있는 프로그램을 만들라는 임무가 내려왔다.

당신은 변속기가 1단에서 8단으로 연속적으로 변속을 한다면 ascending, 8단에서 1단으로 연속적으로 변속한다면 descending, 둘다 아니라면 mixed 라고 정의했다.

변속한 순서가 주어졌을 때 이것이 ascending인지, descending인지, 아니면 mixed인지 출력하는 프로그램을 작성하시오.

제약조건

주어지는 숫자는 문제 설명에서 설명한 변속 정도이며, 1부터 8까지 숫자가 한번씩 등장한다.

입력형식

첫째 줄에 8개 숫자가 주어진다.

출력형식

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.

입력예제1

1 2 3 4 5 6 7 8

출력예제1

ascending



2. 풀이

이 문제가 직전에 푼 <회의실 예약> 문제랑 같은 Lv.2라는 게 믿기지 않는다.
그만큼 쉬웠고, 빨리 풀었다.

  • for문을 돌면서 다음 값이 현재 값+1인지, 현재 값-1인지 체크한다.
  • ascendingcheck 값이 7인 경우이고
  • descendingcheck 값이 -7인 경우이고
  • mixedcheck7도 아니고 -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();
});
profile
우당탕탕 FE 성장기

0개의 댓글