1.1. JollyJumpers.java ¶
~cpp
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
/*
* Created on 2005. 1. 4
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class JollyJumpers {
int [] nums;
public int [] inputNumbers() {
String message = processKeyInput();
String [] ch = splitMessage(message);
return toInt(ch);
}
private String[] splitMessage(String message) {
return message.split(" ");
}
private int[] toInt(String [] ch) {
int len = ch.length;
nums = new int[len];
for(int i = 0; i < len; i++) {
nums[i] = Integer.parseInt(ch[i]);
}
return nums;
}
private String processKeyInput() {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String message = "";
try {
message = in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return message;
}
public int[] getdifferenceValue() {
int len = nums.length - 1;
int [] differValue = new int[len];
for(int i = 0; i < len; i++) {
differValue[i] = Math.abs(nums[i+1] - nums[i]);
}
nums = sort(differValue);
return nums;
}
private int[] sort(int[] aNum) {
for(int i = 0; i < aNum.length; i++)
for(int j = 0; j < aNum.length; j++)
if (aNum[i] < aNum[j])
aNum = swap(aNum, i, j);
return aNum;
}
private int[] swap(int [] aNum, int i, int j) {
int temp = aNum[i];
aNum[i] = aNum[j];
aNum[j] = temp;
return aNum;
}
public boolean isJolly() {
int len = nums.length;
for(int i = 1; i < len; i++)
if (i != nums[i-1])
return false;
return true;
}
private void printResult(Vector v) {
for(int i = 0; i < v.size(); i++) {
System.out.println(v.get(i));
}
}
static public void main(String [] args) {
Vector v = new Vector();
while(true) {
JollyJumpers j = new JollyJumpers();
j.inputNumbers();
if (j.nums[0] == 0) {
j.printResult(v);
break;
}
j.getdifferenceValue();
if (j.isJolly()) v.add("Jolly");
else v.add("Not jolly");
}
}
}
2.1. JollyJumpers.java ¶
~cpp
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeSet;
/*
* Created on 2005. 1. 6.
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class JollyJumpers {
int size;
int [] numbers;
public String inputNum() {
String line = "";
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
line = in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return line;
}
public int [] stringToInt(String line) {
String [] ch = line.split(" ");
int len = ch.length - 1;
numbers = new int[len];
size = Integer.parseInt(ch[0]);
for (int i = 0; i < len; i++) {
numbers[i] = Integer.parseInt(ch[i+1]);
}
return numbers;
}
public boolean isRightInput() {
return size == numbers.length ? true : false;
}
public TreeSet computeGaps() {
TreeSet set = new TreeSet();
for(int i = 0; i < numbers.length - 1; i++) {
set.add(new Integer(Math.abs(numbers[i] - numbers[i+1])));
}
return set;
}
public boolean isJolly(TreeSet set) {
int numOfSeries = size - 1;
if (set.size() != numOfSeries) {
return false;
}
Iterator i = set.iterator();
int series = 1;
while (i.hasNext()) {
Integer num = (Integer) i.next();
if (num.intValue() != series) {
return false;
}
series++;
}
return true;
}
public void printResult(ArrayList list) {
for(int i = 0; i < list.size(); i++) {
System.out.println((String) list.get(i));
}
}
public boolean isException() {
if (size > 3000) {
System.out.println("3000 과. ");
return true;
}
if (!isRightInput()) {
System.out.println(" 개" + size + "과 . ");
return true;
}
return false;
}
public static void main(String [] args) {
ArrayList list = new ArrayList();
while(true) {
JollyJumpers j = new JollyJumpers();
String line = j.inputNum();
j.stringToInt(line);
if (j.size == 0) {
j.printResult(list);
break;
}
if (j.isException())
continue;
TreeSet set = j.computeGaps();
if (j.isJolly(set))
list.add("Jolly");
else
list.add("Not jolly");
}
}
}
2.2. TestJollyJumpers.java ¶
~cpp
import junit.framework.TestCase;
/*
* Created on 2005. 1. 6.
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class TestJollyJumpers extends TestCase {
JollyJumpers j;
String line;
public void setUp() {
j = new JollyJumpers();
line = "5 1 4 2 -1 6";
j.numbers = new int[]{1,4,2,-1,6};
j.size = 5;
}
public void testInputNum() {
j = new JollyJumpers();
assertEquals("5 1 4 2 -1 6", line);
}
public void testStringToInt() {
int [] num = {1,4,2,-1,6};
assertEquals(num[0], j.stringToInt(line)[0]);
assertEquals(num[1], j.stringToInt(line)[1]);
}
public void testIsRightInput() {
assertEquals(5, j.numbers.length);
assertEquals(true, j.isRightInput());
}
public void testIsJolly() {
assertEquals(false, j.isJolly(j.computeGaps()));
}
}
3. ¶
1.
2. main . 기 .
3. test . 게 test field 고 . 기 고 . 계 겠.
--
----
JollyJumpers
~cpp TreeSet . sort log(n) .
2. main . 기 .
3. test . 게 test field 고 . 기 고 . 계 겠.
--
JollyJumpers










