05-16 05:32
Recent Posts
Recent Comments
관리 메뉴

miinsun

[Programmers] λ‹€μŒ 큰 숫자 - JAVA (λ¬Έμžμ—΄ 처리) λ³Έλ¬Έ

Algorithm/Programmers

[Programmers] λ‹€μŒ 큰 숫자 - JAVA (λ¬Έμžμ—΄ 처리)

miinsun 2022. 5. 20. 23:47

πŸ’¬ λ¬Έμ œ μ„€λͺ…

μžμ—°μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, n의 λ‹€μŒ 큰 μˆ«μžλŠ” λ‹€μŒκ³Ό 같이 μ •μ˜ ν•©λ‹ˆλ‹€.

* 쑰건 1. n의 λ‹€μŒ 큰 μˆ«μžλŠ” n보닀 큰 μžμ—°μˆ˜ μž…λ‹ˆλ‹€.
* 쑰건 2. n의 λ‹€μŒ 큰 μˆ«μžμ™€ n은 2μ§„μˆ˜λ‘œ λ³€ν™˜ν–ˆμ„ λ•Œ 1의 κ°―μˆ˜κ°€ κ°™μŠ΅λ‹ˆλ‹€.
* 쑰건 3. n의 λ‹€μŒ 큰 μˆ«μžλŠ” 쑰건 1, 2λ₯Ό λ§Œμ‘±ν•˜λŠ” 수 쀑 κ°€μž₯ μž‘μ€ 수 μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄μ„œ 78(1001110)의 λ‹€μŒ 큰 μˆ«μžλŠ” 83(1010011)μž…λ‹ˆλ‹€.

μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, n의 λ‹€μŒ 큰 숫자λ₯Ό return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

🚫 μ œν•œ μ‚¬ν•­

  • n은 1,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜ μž…λ‹ˆλ‹€.

 

πŸ”¨ μž…μΆœλ ₯ 예

  1. μž…μΆœλ ₯ 예 1
    • 문제 μ˜ˆμ‹œμ™€ κ°™μŠ΅λ‹ˆλ‹€.
  2. μž…μΆœλ ₯ 예 2
    1. 15(1111)의 λ‹€μŒ 큰 μˆ«μžλŠ” 23(10111)μž…λ‹ˆλ‹€.

 

 

πŸ’» Solution.java

  • λ¨Όμ € n보닀 큰 λͺ¨λ“  수 λ“€μ˜ 2μ§„μˆ˜λ₯Ό κ΅¬ν•œλ‹€.
  • 2μ§„μˆ˜λ‘œ λ³€ν™˜ν–ˆμ„ λ•Œ 1의 갯수λ₯Ό n의 1의 κ°―μˆ˜μ™€ λΉ„κ΅ν•˜λ©΄μ„œ
    • 처음으둜 같은 수의 2μ§„μˆ˜κ°€ λ°œκ²¬λœλ‹€. λ°˜λ³΅λ¬Έμ„ νƒˆμΆœν•œλ‹€.
class Solution {
    public int solution(int n) {
        int answer = 0;

        int cnt = getBinary(n);
        int i = n + 1;
        while (true) {
            if (cnt == getBinary(i)) {
                answer = i;
                break;
            }
            
            i++;
        }
        
        return answer;
    }

    public int getBinary(int n) {
        char[] arr = Integer.toBinaryString(n).toCharArray();
        int cnt = 0;
        
        for (char c : arr) {
            if (c == '1') cnt++;
        }
        
        return cnt;
    }
}
Comments