프로그래머스 다음 큰 숫자 JAVA 풀이 (비트 연산, Integer.bitCount)

2026. 6. 23. 15:59·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


📌 문제 개요

자연수 n이 주어질 때 다음 조건을 만족하는 가장 작은 자연수를 구하는 문제이다.

  • n보다 큰 수
  • n과 2진수의 1의 개수가 같은 수
  • 조건을 만족하는 수 중 가장 작은 수

예를 들어 78의 이진수는 다음과 같다.

78 = 1001110

1의 개수는 4개이다.

이후 숫자를 확인하면

79 = 1001111 (5개)
80 = 1010000 (2개)
81 = 1010001 (3개)
82 = 1010010 (3개)
83 = 1010011 (4개)

따라서 정답은 83이다.


📌 접근 방법

현재 숫자의 1의 개수를 먼저 구한다.

int count = Integer.bitCount(n);

그 후 n + 1부터 탐색하면서 같은 개수의 1을 가지는 숫자를 찾는다.

while (true) {
    n++;

    if (count == Integer.bitCount(n)) {
        return n;
    }
}

조건을 만족하는 가장 첫 번째 숫자가 곧 정답이다.


📌 핵심 아이디어

1. Integer.bitCount() 활용

2진수로 변환하지 않아도 내부적으로 1의 개수를 계산해준다.

Integer.bitCount(78);
// 4

2. 현재 숫자의 1 개수 저장

기준이 되는 1의 개수를 저장한다.

int count = Integer.bitCount(n);
78 = 1001110
// 1의 개수 = 4

3. 다음 숫자부터 탐색

현재 숫자보다 큰 수만 확인해야 하므로 먼저 증가시킨다.

n++;

4. 1의 개수 비교

현재 숫자의 1 개수가 기준 개수와 같다면 정답이다.

 
if (count == Integer.bitCount(n))

예시

83 = 1010011
↓
1의 개수 = 4
↓
78과 동일

📌 전체 코드

class Solution {
    public int solution(int n) {

        int count = Integer.bitCount(n);

        while (true) {
            n++;

            if (count == Integer.bitCount(n)) {
                return n;
            }
        }
    }
}
 

📄 정리

  • 문제의 핵심은 숫자의 크기가 아니라 2진수에서 1의 개수이다.
  • Integer.bitCount()를 사용하면 1의 개수를 쉽게 구할 수 있다.
  • n + 1부터 순차 탐색하여 조건을 만족하는 첫 번째 숫자를 찾는다.
  • 비트 연산 관련 문제에서 자주 활용되는 자바 내장 메서드를 익힐 수 있다.
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 창고 정리 JAVA 풀이  (0) 2026.06.24
프로그래머스 숫자의 표현 JAVA 풀이 (투 포인터, 슬라이딩 윈도우)  (0) 2026.06.23
프로그래머스 피보나치 수 JAVA 풀이 (DP, 공간 최적화)  (0) 2026.06.22
프로그래머스 올바른 괄호 JAVA 풀이 (스택)  (0) 2026.06.22
프로그래머스 최솟값 만들기 JAVA 풀이 (그리디, 정렬)  (0) 2026.06.21
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 창고 정리 JAVA 풀이
  • 프로그래머스 숫자의 표현 JAVA 풀이 (투 포인터, 슬라이딩 윈도우)
  • 프로그래머스 피보나치 수 JAVA 풀이 (DP, 공간 최적화)
  • 프로그래머스 올바른 괄호 JAVA 풀이 (스택)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    구현
    실기
    level0
    정처기실기
    자바
    기출문제
    정보처리기사 실기 기출문제
    solved.ac
    시뮬레이션
    백준
    피보나치
    문자열
    정처기
    수학
    브루트포스
    프로그래머스
    정처기오답노트
    Level2
    코딩테스트
    springboot
    알고리즘
    정보처리기사
    dp
    java
    완전탐색
    배열
    level1
    정렬
    자료구조
    백엔드개발자
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 다음 큰 숫자 JAVA 풀이 (비트 연산, Integer.bitCount)
상단으로

티스토리툴바