Skip to content

Instantly share code, notes, and snippets.

@QuadFlask
Last active May 10, 2016 12:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save QuadFlask/9fbaf22ac7a8ab3961c858a9113ad072 to your computer and use it in GitHub Desktop.
Save QuadFlask/9fbaf22ac7a8ab3961c858a9113ad072 to your computer and use it in GitHub Desktop.
[CodeWars] Hamming number (Regular number)

제한시간(6s) 초과

url

###My solution

// 764번째 -> 5^10 = 9765625
// 764 => 10
function hamming(n) {
	var pow = (i,j,k)=> Math.pow(2,i)*Math.pow(3,j)*Math.pow(5,k);
	var permutate = (ni,nj,nk)=> {
		var r = [];
		for(var k=0;k<=nk;k++)
		for(var j=0;j<=nj;j++)
		for(var i=0;i<=ni;i++)
			r.push([i,j,k]);
		return r;
	};

	return permutate(
			Math.ceil(Math.pow(n, 1/2)),
			Math.ceil(Math.pow(n, 1/2)),
			Math.min(20, Math.ceil(Math.pow(n, 1/2))))
		.map(a=> pow(a[0],a[1],a[2]))
		.sort((a,b)=>a-b)
		[n-1];
}
@QuadFlask
Copy link
Author

문제에선 5000번째까지 구해야한다고 되어있는데, 위 함수로는 실제론 71_71_71 인 35만개를 구해버리기 때문에 엄청 느림(거기에다가 소팅을 또 함... 😢)

경우의 수를 줄이는게 중요할거 같은데 어떻게 줄여야할지..? n번째라는건 일단 답이 추정이 잘 안되는 상황인거 같은데.. 접근을 잘못 했나봄??

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment