처음에 꺼진 n개의 전구가 있다고 가정합니다. 먼저 모든 전구를 켭니다. 그런 다음 매 초마다 전구를 끕니다. 세 번째 라운드에서는 세 번째 전구마다 토글합니다(꺼진 경우 켜고 켜져 있는 경우 꺼짐). 유사하게, i번째 라운드의 경우, 우리는 모든 i 전구를 토글합니다. n번째 라운드에서는 마지막 전구만 토글합니다. 그래서 우리는 n 라운드 후에 몇 개의 전구가 켜져 있는지 찾아야 합니다. 따라서 입력이 3이면 결과는 1이 됩니다. 이는 -
- 처음에는 전구 3개가 [꺼짐, 꺼짐, 꺼짐]입니다.
- 첫 라운드가 끝나면 전구 3개가 [켜짐, 켜짐, 켜짐]입니다.
- 두 번째 라운드가 끝나면 전구 3개가 [켜기, 끄기, 켜기]입니다.
- 3라운드가 끝나면 전구 3개가 [켜짐, 꺼짐, 꺼짐]입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 이 단계는 간단합니다. n의 제곱근을 찾아 반환해야 합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
#include <bits/stdc++.h> using namespace std; class Solution { public: int bulbSwitch(int n) { return sqrt(n); } }; main(){ Solution ob; cout << (ob.bulbSwitch(3)); }
입력
3
출력
1