๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - (Level2)๋‹ค์Œ ํฐ ์ˆซ์ž

by ์ฃผ๋ฐœ2 2020. 3. 13.
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/12911?language=java

 

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

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

programmers.co.kr

์ฝ”๋“œ

class Solution {
  	// n์„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ 1์˜ ๊ฐฏ์ˆ˜ ์ฐพ๊ธฐ
	public static int oneNum(int num) {
		int count = 0;
		while(num != 0) {
			if(num%2 != 0)
				count ++;
			num /= 2;
		}
		return count;
	}

	public int solution(int n) {
		int answer = 0;
		for(int i=n+1; ; i++) {
			if(oneNum(i) == oneNum(n)) {
				answer = i;
				break;
			}
		}
		return answer;
	}
}

ํ’€์ด

์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

์ž์—ฐ์ˆ˜ n์„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ, 1์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด oneNum() ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ–ˆ๋‹ค.

๊ทธ ํ›„ for๋ฌธ์„ ํ†ตํ•ด n+1๋ถ€ํ„ฐ ๋ฐ˜๋ณตํ•˜๊ณ , ๋งŒ์•ฝ ์กฐ๊ฑด 2, 3์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๋ฅผ ์ฐพ์•˜์„๊ฒฝ์šฐ ํƒˆ์ถœํ•˜๊ณ , ๊ทธ ์ˆ˜๋Š” ๊ฐ€์žฅ ์ž‘์€์ˆ˜๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€