<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=HanoiTowerTroublesAgain%21%2F%ED%99%A9%EC%9E%AC%EC%84%A0</id>
	<title>HanoiTowerTroublesAgain!/황재선 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=HanoiTowerTroublesAgain%21%2F%ED%99%A9%EC%9E%AC%EC%84%A0"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=HanoiTowerTroublesAgain!/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;action=history"/>
	<updated>2026-05-15T04:15:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=HanoiTowerTroublesAgain!/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;diff=32065&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=HanoiTowerTroublesAgain!/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;diff=32065&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;2006.1.15&lt;br /&gt;
&lt;br /&gt;
== 느낌 ==&lt;br /&gt;
* 문제 이해를 잘못했다-_-; 한 기둥에 놓여진 전체 번호의 합이 완전제곱수인지 체크했었다.ㅡㅜ&lt;br /&gt;
* 초기에 잘못 접근했다 쳐도 구현 시간이 오래 걸렸다.&lt;br /&gt;
&lt;br /&gt;
== 소스 코드 ==&lt;br /&gt;
 import static java.lang.Math.ceil;&lt;br /&gt;
 import static java.lang.Math.floor;&lt;br /&gt;
 import static java.lang.Math.sqrt;&lt;br /&gt;
 &lt;br /&gt;
 import java.util.Scanner;&lt;br /&gt;
 &lt;br /&gt;
 public class HanoiTower {&lt;br /&gt;
 	&lt;br /&gt;
 	public int readNumber() {&lt;br /&gt;
 		return new Scanner(System.in).nextInt();&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public boolean canBallPut(int[] prev, int peg, int ballNumber) {&lt;br /&gt;
 		if (prev[peg] == 0) {&lt;br /&gt;
 			return true;&lt;br /&gt;
 		}&lt;br /&gt;
 		double squareNumber = sqrt(prev[peg] + ballNumber);&lt;br /&gt;
 		return ceil(squareNumber) == floor(squareNumber);&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public int maxBall(int numOfPeg) {&lt;br /&gt;
 		int[] prevNumber = new int[numOfPeg + 1];&lt;br /&gt;
 		&lt;br /&gt;
 		int ballNumber = 1;&lt;br /&gt;
 		int oldBallNumber = 0;&lt;br /&gt;
 		while(oldBallNumber != ballNumber) {&lt;br /&gt;
 			oldBallNumber = ballNumber;&lt;br /&gt;
 			for(int peg = 1; peg &amp;amp;lt;= numOfPeg; peg++) {&lt;br /&gt;
 				if (canBallPut(prevNumber, peg, ballNumber)) {&lt;br /&gt;
 					prevNumber[peg] = ballNumber++;&lt;br /&gt;
 					break;&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			if (ballNumber == Integer.MAX_VALUE) {&lt;br /&gt;
 				return -1;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		return ballNumber - 1;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public void printNumberOfBall(int numOfBall) {&lt;br /&gt;
 		System.out.println(numOfBall);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public static void main(String[] args) {&lt;br /&gt;
 		HanoiTower hanoi = new HanoiTower();&lt;br /&gt;
 		&lt;br /&gt;
 		int testCase = hanoi.readNumber();&lt;br /&gt;
 		for(int i = 0; i &amp;amp;lt; testCase; i++) {&lt;br /&gt;
 			int numOfPeg = hanoi.readNumber();&lt;br /&gt;
 			int numOfBall = hanoi.maxBall(numOfPeg);&lt;br /&gt;
 			hanoi.printNumberOfBall(numOfBall);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[HanoiTowerTroublesAgain!]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>