Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 전구 켜고 끄기

<시간/>

문제

다음 상황을 고려하십시오 -

처음에 꺼진 n개의 전구가 있습니다. 먼저 모든 전구를 켭니다. 그런 다음 매초 전구를 끕니다. 세 번째 라운드에서는 세 번째 전구마다 전환합니다(꺼진 경우 켜짐, 켜져 있는 경우 꺼짐).

일반적으로 i번째 라운드에서는 모든 i번 전구를 토글합니다. 그리고 마지막으로 n번째 라운드에서는 마지막 전구만 전환합니다.

n을 유일한 입력으로 사용하고 n 라운드 후에 전구가 몇 개나 켜져 있는지 알아내는 JavaScript 함수를 작성해야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
const n = 4;

그러면 출력은 다음과 같아야 합니다. -

const output = 2;

출력 설명:

상태 배열에서 0은 꺼짐을 나타내고 1은 켜짐을 나타냅니다 -

라운드 상태
1 [1, 1, 1, 1, 1]
2 [1, 0, 1, 0, 1]
3 [1, 0, 0, 0, 1]
4 [1, 0, 0, 1, 1]
5 [1, 0, 0, 1, 0]

따라서 다섯 번째 라운드 이후에는 전구 두 개만 켜집니다.

예시

이에 대한 코드는 -

const n = 5;
const findOn = (n = 1) => {
   let off = 0;
   let on = n;
   while(off <= on){
      let mid = Math.floor((off + on) / 2);
      if(mid * mid > n){
         on = mid - 1;
      }else{
         off = mid + 1;
      };
   };
   return Math.floor(on);
};
console.log(findOn(n));

출력

콘솔의 출력은 -

2