[자바JAVA]사용자로부터 정수 10개를 입력받은 후 3의 배수만 골라서 출력하기

문제

정수 10개를 입력받아 배열에 저장한 후, 배열을 검색하여 3의 배수만 골라서 출력하시오. 3의 배수가 없을 경우 “해당사항 없음” 메세지를 출력 하시오.




내코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static void main(String[] args) {

// 정수형 배열 선언
int inputTen[] = new int[10];

// 스캐너로 총 10개의 정수를 사용자로부터 입력 받기
Scanner sc = new Scanner(System.in);
System.out.print("10개의 정수를 입력하세요");

for (int i = 0; i < inputTen.length; i++) {
inputTen[i] = sc.nextInt();
}

// 배열에서 3의 배수만 골라서 ArrayList에 담기
ArrayList<Integer> result = new ArrayList<>();

for(int i=0; i < inputTen.length; i++){
if(inputTen[i]%3 == 0){
result.add(inputTen[i]);
}
}

// 3의 배수가 있을 경우 ArrayList전체 출력하고 없을 경우 해당사항 없음 메세지 출력
if(result.size() > 0 ){
for(Integer i : result){
System.out.println(i);
}
}else{
System.out.println("해당사항 없음");
}


}//end of main()
  • 배열을 두 개를 생성하면 메모리 낭비가 생긴다. 변수가 가능하다면 객체대신 변수를 사용하는 것이 메모리효율에 좋다.
    • 변수인 int는 4바이트인데 객체는 최소 4바이트 이상이니까.
  • 따라서 이 문제에선 변수를 쓰는 것이 속도도 빠르다. 왜냐면 메모리를 만드는 시간이 드니까




강사님코드

  • 10개 check하는 변수를 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static void main(String[] args) {

// 정수형 배열 선언
int inputTen[] = new int[10];

// 스캐너로 총 10개의 정수를 사용자로부터 입력 받기
Scanner sc = new Scanner(System.in);
System.out.print("10개의 정수를 입력하세요");

for (int i = 0; i < inputTen.length; i++) {
inputTen[i] = sc.nextInt();
}

//3의 배수만 출력
int ck = 0;
for(int i=0;i<inputTen.length;i++){
if(inputTen[i]%3 == 0){
System.out.println("3의 배수 :"+inputTen[i]);
}else{
ck++;
if(ck ==10){
System.out.println("해당사항 없음");
}
}
}

}//end of main()