[프로그래머스][Java] Lv.2 다음 큰 숫자

2023. 6. 6. 10:19·Algorithms(CT)

 

풀이과정

  1. n을 이진수로 바꾸면서 1의 개수를 센다.
  2. n을 1씩 증가하면서 입력으로 주어진 n과 1의 개수가 같아질 때까지 찾는다.

 

코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        int one = cntOne(n); //초기 n의 1개수.
        
        //1의 개수가 같을 때까지 n++하면서 조사.
        while(true){
            n++;
            if(cntOne(n)==one){
                answer=n;
                break;
            }
        }
        return answer;
    }
    //n을 이진수로 바꿨을 때 1의 개수
    static int cntOne(int n){
        int cnt=0;
        while(n>1){
            cnt+=n%2;
            n/=2;
        }
        return ++cnt; //제일 앞자리 1
    }
}

다른사람 풀이

cntOne해주는 함수를 따로 만들 필요 없이 Integer내장함수인 Integer.bitCount를 사용하면 훨씬 더 쉽게 풀이 가능하다.

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        int one = Integer.bitCount(n); //이진수로 바꿨을 때 1의 개수 count
        
        //1의 개수가 같을 때까지 n++하면서 조사.
        while(true){
            n++;
            if(Integer.bitCount(n)==one){
                answer=n;
                break;
            }
        }
        return answer;
    }
}

효율성 오류

더보기
while(true){
	n++;
	int one = Integer.toBinaryString(n).replaceAll("0","").length();
}

처음 알고 있는 함수를 활용해보려고 replace함수를 사용하였는데,

replace함수는 문자열 처음부터 검색하는 함수이므로 while문 안에 넣게 되면 시간복잡도가 O(n^2)로 크게 증가한다

이 부분에서 효율성 오류가 나지 않았을까 싶다.

'Algorithms(CT)' 카테고리의 다른 글

[프로그래머스][Java] Lv.2 짝지어 제거하기  (0) 2023.06.08
[프로그래머스][Java] Lv.2 피보나치 수  (0) 2023.06.07
[프로그래머스][Java] Lv.4 도둑질  (0) 2023.06.07
[프로그래머스][Java] Lv.3 등굣길  (0) 2023.06.06
[프로그래머스][Java] Lv.2 숫자의 표현  (0) 2023.06.05
'Algorithms(CT)' 카테고리의 다른 글
  • [프로그래머스][Java] Lv.2 피보나치 수
  • [프로그래머스][Java] Lv.4 도둑질
  • [프로그래머스][Java] Lv.3 등굣길
  • [프로그래머스][Java] Lv.2 숫자의 표현
gwee_99
gwee_99
bE bETTER!
  • gwee_99
    얼렁이와 뚱땅이
    gwee_99
  • 전체
    오늘
    어제
    • ====Category====
      • Algorithms(CT)
        • Programmers
        • Baekjoon
        • Goorm
      • Web
        • Error 해결
      • BackEnd
        • Spring
        • JPA
      • FrontEnd
        • HTML.CSS
        • JavaScript
      • Language
        • Java
      • Cloud
      • CSTS
      • Books
        • IT 5분 잡학사전
      • 일상
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    구름
    제대로 파는 자바스크립트
    백준
    BOJ
    BFS
    프로그래머스
    스택
    Lv.1
    노마드코더
    lv2
    DP
    따라하며 배우는 html css
    lv.4
    java
    DFS
    LV.2
    그리디
    자바
    존안님
    IT 5분 잡학사전
    호텔 대실
    Til
    개발자북클럽
    코딩테스트
    LV.3
    Greedy
    IT 잡학사전
    인프런
    HTML
    구름톤 챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gwee_99
[프로그래머스][Java] Lv.2 다음 큰 숫자
상단으로

티스토리툴바