알고리즘 심화반 타임어택 문제로 선택된 문제. 확실히 한 주 동안 풀어본 유형을 내주셔서 생각보다 빠르게 풀 수 있었다.
프로그래머스_다음 큰 숫자
처음에는 재귀로 풀어야 할까? 생각하다가 좀 더 단순하게 생각했다.
NumberOfOne이라는 함수를 만들어 1의 개수를 세었고, 이 함수에서 toString()과 match()는 모두 O(log n)의 시간 복잡도를 가진다. 따라서 solution 함수에서는 targetNumber의 초기값을 선언하고 while문의 조건문을 실행할 때 O(log n), while 루프를 돌 때 O(n)의 시간복잡도를 가짐으로 최종적으로 O(n)으로 계산하였다.
이것보다 비트 연산을 통해 더 빠르고, 시간 복잡도도 줄이는 방법이 있었는데 많이 난해하여 실제 적용하긴 어려울 듯하다. 알고리즘은 더 효율적으로 문제를 해결하기 위함인데, 오히려 해당 코드를 사용하여 해석하는데 더 자원이 많이 들 것 같았다.
'TIL' 카테고리의 다른 글
[2024.06.17] 새로운 팀 프로젝트 시작_아웃소싱 프로젝트 (0) | 2024.06.18 |
---|---|
[2024.06.15~16] 리액트 테스트 (0) | 2024.06.18 |
[2024.06.13] React 심화 프로젝트_가계부(95% 완성) (0) | 2024.06.13 |
[2024.06.12] React 심화과정 개인 프로젝트 (0) | 2024.06.12 |
[2024.06.11] 프로그래머스_최솟값 만들기 (0) | 2024.06.12 |