코테 및 알고리즘

고장난 컴퓨터 - 구름

Jay_Jung 2024. 6. 11. 13:46

 

<문제>

https://level.goorm.io/exam/49095/%EA%B3%A0%EC%9E%A5%EB%82%9C-%EC%BB%B4%ED%93%A8%ED%84%B0/quiz/1

 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io

 

<문제 핵심>

1. 반복문을 이용한 배열 요소 탐색

2. times[i]와 lastReset의 차이를 C와 비교

 

<해결과정 및 순서도>

✅ N과 C 그리고 배열 times를 저장한다.

-> [1, 3, 4, 8, 19, 20] 일 경우 예를 들어 1초의 시간이 지나고 1번, 3초의 시간이 지나고 1번, 4초의 시간이 지나고 1번 누르고 5초(C) 동안은 코드가 남아있는 것

const input = require("fs").readFileSync(0, "utf-8").toString().split("\n");

const [N, C] = input[0].split(' ').map(Number);
const times = input[1].split(' ').map(Number);

 

✅ 남아있는 코드의 개수를 의미하는 remaining 변수, 그리고 마지막으로 지워진 코드의 시간인 lastReset 변수 0 초기화

✅ 반복문을 돌며 times배열을 순회하고 times배열 요소와 lastReset의 차이를 조건문으로 따져서 C, 즉 5가 넘어가면 남은 건 1개가 되도록, 5가 안 넘으면 남아있는 코드의 갯수를 후위연산자로 증가시킨다.

let remaining = 0;
let lastReset = 0;

for (let i = 0; i < N; i++) {
  if (times[i] - lastReset > C) {
    remaining = 1;
  } else {
    remaining++;
  }
  lastReset = times[i];
}

console.log(remaining);

 

<전체 코드>

const input = require("fs").readFileSync(0, "utf-8").toString().trim().split("\n");

const [N, C] = input[0].split(' ').map(Number);
const times = input[1].split(' ').map(Number);

let remaining = 0;
let lastReset = 0;

for (let i = 0; i < N; i++) {
  if (times[i] - lastReset > C) {
    remaining = 1;
  } else {
    remaining++;
  }
  lastReset = times[i];
}



console.log(remaining);