10개의 정수가 배열에 기억되어 있다.
10개의 정수 중에서 7에 가장 가까운 정수를 찾아 그 정수를 출력하고자 한다.
배열에 기억되어 있는 순서에 따라 10개의 정수와 7과의 차이값을 구하여 그 차이값 중 가장 최소값을 가지는 정수를 7에 가장 가까운 값으로 선택하여 출력하라.
<조건>
배열에 기억된 10개의 데이터는 절대값이 500이하의 정수라고 가정한다.
실행 결과
1회
2회
3회
package jungbo;
import java.util.Random;
public class P118TheNumberColsestTo7 {
public static void main(String[] args) {
int i; //반복문 돌리기 위한 변수
int number[] = new int[10]; //임의 정수 10개를 받기 위한 배열
Random random = new Random();
for(i=0;i<10;i++){ //절대값 500이하의 정수를 임의로 발생시킨다.
number[i]=random.nextInt(500); //0~500까지 랜덤
if(random.nextInt(2)==0){ //0또는 1을 발생시켜서 0이면
number[i]=number[i]*(-1); //음수로 바꿔준다
}
}
int C = 555; //현재 정수와 7의 차이를 넣어서, S와 비교하기 위한 변수
int S = 0; //7과 정수의 차를 넣을 변수
int G = 0; //7과 가장 차이가 적게 나는 수를 넣을 변수
for(i=0;i<10;i++){
if(number[i] >= 7){
S = number[i]-7;
}else{
S = 7-number[i];
}
if(C>S){ //C의 초기값이 555이므로 첫 1회 무조건 실행
C=S; //C에 7과 정수의 차이를 대입
G=number[i]; //현재 7과 가장 차이가 적게 나는 수를 G에 대입
}
}
//출력
System.out.print("[");
String c;
for(i=0;i<10;i++){
c = (i==9)?"]\n":", ";
System.out.print(number[i]+c);
}
System.out.println("7과 가장 차이가 적게 나는 수는 " + G +"입니다.");
}
}
'JAVA > 알고리즘 예제' 카테고리의 다른 글
[JAVA] 부호있는 8비트 2진수를 10진수로 변환 (0) | 2016.09.15 |
---|---|
[JAVA] 소수로 삼각형 찍기 (0) | 2016.09.14 |
[JAVA] 8bit 2진수의 2의 보수 구하기 (0) | 2016.09.14 |
[JAVA] 5자리 2진수의 보수 구하기 (0) | 2016.09.14 |
[JAVA] 최대공약수, 최소공배수 계산 문제 (0) | 2016.09.14 |