๊ธฐ๋ก๋ฐฉ

Lv.2 : ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ ๋ณธ๋ฌธ

CodingTest/Java

Lv.2 : ์˜ˆ์ƒ ๋Œ€์ง„ํ‘œ

Soom_1n 2023. 9. 14. 12:31

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ํ† ๋„ˆ๋จผํŠธ์—์„œ n๋ช…์˜ ์‚ฌ๋žŒ ์ค‘ a๋ฒˆ์งธ ์‚ฌ๋žŒ๊ณผ b๋ฒˆ์งธ ์‚ฌ๋žŒ์ด ๋งž๋ถ™๊ฒŒ ๋  ๋ผ์šด๋“œ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
    • a์™€ b๋Š” ์„œ๋กœ ๋งŒ๋‚˜๊ธฐ ์ „ ๊นŒ์ง€ ํ•ญ์ƒ ์Šน๋ฆฌํ•œ๋‹ค.
    • ์Šน์ž๋“ค์„ ๋‹ค์‹œ 1๋ถ€ํ„ฐ n`๊นŒ์ง€ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ฒจ ๋ถ™๊ฒŒ๋œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • a < b์ผ๋•Œ, b-a == 1 ์ด๊ณ , a๊ฐ€ ํ™€์ˆ˜, b๊ฐ€ ์ง์ˆ˜์ผ๋•Œ ๋งž๋ถ™๊ฒŒ๋œ๋‹ค.
  • ์œ„ ์กฐ๊ฑด์ด ๋งŒ์กฑ ํ•  ๋•Œ๊นŒ์ง€ a์™€ b ๊ฒŒ์ž„์„ ์ง„ํ–‰์‹œํ‚จ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

class Solution
{
    public int solution(int n, int a, int b)
    {
        if(a > b) {
            int temp = a;
            a = b;
            b = temp;
        }
        
        int answer = 1;
        
        while(!(b-a == 1 && a%2 == 1 && b%2 == 0)) {
            answer++;
            a = a/2 + a%2;
            b = b/2 + b%2;
        }
        return answer;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • a < b ๊ฐ€ ๋˜๋„๋ก ๋งž์ถฐ์ค€๋‹ค.
  • ๊ฒŒ์ž„์ด ์ง„ํ–‰ ๋  ๋•Œ 2๋กœ ๋‚˜๋Š” ๋ชซ + 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ค์Œ ๋ผ์šด๋“œ ๋ฒˆํ˜ธ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์›๋ฆฌ ์ดํ•ด๊ฐ€ ์‰ฌ์›Œ์„œ ์†์‰ฝ๊ฒŒ ํ’€์ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ ๋ฌธ์ œ์˜ ์ˆจ์€ ์›๋ฆฌ ํŒŒ์•…์ด ๋ถ€์กฑํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
    • 1๋ฒˆ ํ’€์ด 
      • ๋‚˜๋จธ์ง€๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ , a์™€ b์—์„œ -1 ํ›„ ๊ฐ๊ฐ 2๋กœ๋‚˜๋ˆˆ ๋ชซ์ด ๊ฐ™์•„ ์งˆ ๋•Œ๊นŒ์ง€ 2๋กœ ๋‚˜๋ˆˆ๋‹ค.
      • 2๋กœ ๋‚˜๋ˆ ์„œ ๋ชซ์ด ๊ฐ™์œผ๋ฉด ๋งž๋ถ™๋Š” ์ƒํ™ฉ์ด๋ผ๋Š”๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์ด๋‹ค.
    • 2๋ฒˆ ํ’€์ด
      • ํš๊ธฐ์ ์ธ ํ’€์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ, ํ•œ ์ค„๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
      • 2๋กœ ๊ณ„์† ๋‚˜๋ˆ ์„œ ๋ชซ์ด ๊ฐ™์•„์ง€๋Š” ๋ผ์šด๋“œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€, 2์ง„์ˆ˜์—์„œ ๊ฒน์น˜์ง€ ์•Š๋Š” 1 ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’๊นŒ์ง€์˜ ๊ธธ์ด๋ผ๋Š” ์›๋ฆฌ๋ผ๊ณ  ์ดํ•ดํ–ˆ๋‹ค. 2์ง„๋ฒ•์„ ์ž˜ ์ด์šฉํ•˜๋‹ˆ ๊ธฐ๊ฐ€๋ง‰ํžŒ ๊ฒƒ ๊ฐ™๋‹ค.
Integer.toBinaryString((a-1)^(b-1)).length();

728x90