문제 및 코드
1. 생각
// 생각
// 그냥 냅다 구현...
// 구현
// n을 2진수로 변환했을 때 1의 개수를 구한다
// while을 돈다
// n을 1 증가시킨 후의 n을 2진수로 변환한 후 1의 개수를 구한다
// 만약 위에서 구한 n의 1 개수와 1 개수가 같으면 break
정확성은 맞지만 효율성에서 틀림...
2. 회고
- 정확성은 맞는데 효율성은 틀림. 이런 부분이 가장 난감하다... while 돌면서 1씩 증가하면서 다 살펴봐서 그런걸까? 아니면 replaceAll 메소드가 시간을 많이 잡아 먹는 걸까? replaceAll을 없애고 그냥 2진수 String을 for문 돌면서 1의 개수를 세어주니 통과가 되었다...
- replaceAll의 시간복잡도는 O(n*m)이고 2진수 String을 for문 돌면서 1 개수 세어주는 것은 O(n)인데 왜 차이가 나는 거지? 어차피 둘다 결국엔 O(n)아닌가? replaceAll의 경우 m이 정규식에 따라 증가할 수도 있다고 하는데 여기선 정규식이 엄청 간단한데 그거 때문인가? 지금에서는 이게 가장 유력한 원인이다... 하지만 왜 그런건지 정확히 이해가 안 간다
3. 체크
풀이 횟수 |
시간 |
정답 여부 |
참고 여부 |
1 |
20분 |
|
O |