자바의 정석 네이버 카페에서 나온 문제중 하나 
초등학교 3학년 문제라는데 ~~

0,1,2,3,4,5,6,7 값을 가지고 4자리씩 2개의 값을 만들어 각 값의 차를 구해서 가장 적은 차이인 값은?

풀이)
수학 알고리즘같은건 없고 그냥 순차적으로 반복문으로 처리함
반복문으로 중복되지 않은 최소 01234567 값 부터 최대값 76543210까지 반복하면서
8과 9가 나올경우 에는 값에서 제외 해버리고 
또한 해당 값에서 숫자가 중복될 경우에도 제외
예) 76543200 일경우에도 제외
그렇게 해서 값을 구한다.

답은 
4012 - 3765
찾은 최소 값은 : 247

JAVA소스이다.

public class cho3 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 두수의 차이가 가장 작은 차이가 생기도록 네자리 정수 만들어 차이를 구하시오
// 이용할 수 있는 숫자 0,1,2,3,4,5,6,7
int rand_number = 76543210;
String rand_check;
String rand_check2;
int num1;
int num2;
int min_num = 76543210;
String TempNum1;
String TempNum2;
for (int i = 01234567; i<=rand_number; i++)
{
rand_check2 = ""+i;
rand_check = fillZero(rand_check2, 8);
if (BiCheck(rand_check) == false) continue;
TempNum1 = rand_check.substring(0,4);
TempNum2 = rand_check.substring(4,8);
num1 = Integer.parseInt(TempNum1);
num2 = Integer.parseInt(TempNum2);
if (min_num > num1-num2 && num1-num2 > 0)
{
min_num = num1-num2;
System.out.println(TempNum1 + " - " + TempNum2);
}
}
System.out.println("찾은 최소 값은 : " + min_num);
}

private static boolean BiCheck(String i) {
// TODO Auto-generated method stub
String tmp = i;
String check_tmp;
String tmp1;

// System.out.println("BiCheck : " + tmp);
for (int x=0; x < tmp.length() ; x++)
{
check_tmp = tmp.substring(x,x+1);
if (check_tmp.equals("8") || check_tmp.equals("9") ) return false;
for (int y=0; y<tmp.length(); y++)
{
if (x == y) continue;
tmp1 = tmp.substring(y,y+1);
if (check_tmp.equals(tmp1))
return false;
}
}
return true;
}

private static String fillZero(String randCheck, int i) {
// TODO Auto-generated method stub
int len;
String Temp="";
String Ret="";
len = randCheck.length();
for (int d = 0 ; d < i - len ; d++)
{
Temp = Ret;
Ret = Temp + "0";
}
Temp = Ret;
Ret = Temp + randCheck;
return Ret;
}

}

'공부중 > JAVA' 카테고리의 다른 글

이제부터 자바라는걸 공부 해볼까 한다..  (0) 2009.12.17
자바를 공부 하기 위해서 

Java의 정석 
그리고
Java 세상을 덮친 Eclipse

2권의 책을 구입했다.

당일배송이라 말에 현혹되서 순간 ..

그런데 퇴근시간을 한참 지난 8시가 못되서 도착을 하다니.. 전화도 안받고.. 
아무튼 열심히 공부 할일만 남았다.
이제부터 자바라는걸 공부 해볼까 한다..
아직 쓸일은 없지만 혹시 모르니 미리미리 공부 해봐야 겠다.

책도 한권 구입했으니 이제 열심히 공부 하는일만...

'공부중 > JAVA' 카테고리의 다른 글

JAVA 문제  (0) 2009.12.21

+ Recent posts