[softeer] 연탄의 크기 JAVA | ArrayList vs 배열 (int[]), Math.max(A,B)

https://softeer.ai/practice/7628

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] items = new int[n];
        
        
        for (int i=0; i<n; i++) {
            items[i] = (sc.nextInt());
        }
        Arrays.sort(items);

        int answer = 0;
        for (int i =2; i<100; i++){
            int cnt = 0;
            for (int j = 0; j<n; j++){
                if(items[j]% i ==0) cnt++;
                if(answer < cnt) answer = cnt;
            }
        }
        
        System.out.println(answer);

        
    }
}

 

여기서 if(answer < cnt) answer = cnt; 부분을 answer = Math.max(answer,cnt) 로 함수를 이용한 코드로 바꿀 수 있다. 

 

ans = Math.max(ans, cnt);

 

 

ArrayList vs Array

items를 추가할 때 배열로 생성할 것인가, ArrayList로 생성할 것인가 고민이었는데, 크기가 정해져 있으므로 배열로 선언했다.

 

  • 배열을 사용할 경우: 요소의 개수를 미리 알고 있어야 하고, 크기를 변경할 수 없으므로 일반적으로 고정된 크기의 데이터에 사용
  • ArrayList를 사용할 경우: 요소의 개수를 동적으로 변경해야 할 필요가 있을 때 유용하며, 추가, 삭제, 탐색과 같은 작업이 쉽다.

Java에서 ArrayList와 배열(int[])의 동작 방식은 다소 다르다. 두 경우 모두 요소의 값이 출력되는 방식이지만, 메모리 주소를 출력할 때의 차이를 이해하는 것이 중요하다.

 

1. ArrayList <type>

  • 값의 저장: ArrayList에 값을 추가할 때는 값 자체가 저장. 예를 들어, items.add(5);와 같은 코드를 실행하면 5라는 값이 ArrayList에 추가
  • 출력: System.out.println(items);을 통해 ArrayList를 출력하면, 내부적으로 toString() 메서드를 호출하여 저장된 값들을 문자열 형식으로 반환한다. 따라서 값들이 출력된다.
ArrayList<Integer> items = new ArrayList<>();
items.add(5);
items.add(10);
System.out.println(items); // 출력: [5, 10]

 

2. 배열 (int[])

  • 값의 저장: 배열에 값을 추가할 때도 값 자체가 저장. 예를 들어, items[0] = 5;라고 하면, 배열의 첫 번째 위치에 5가 저장된다.
  • 출력: 그러나 System.out.println(items);를 통해 배열을 출력하면, 배열의 참조 주소를 출력한다. 배열은 객체이기 때문에, 기본적인 println() 메서드는 주소값을 출력하게 된다. 이를 위해서는 Arrays.toString() 메서드를 사용하여 배열의 값을 문자열로 변환해야 한다.
int[] items = new int[2];
items[0] = 5;
items[1] = 10;
System.out.println(items); // 출력: [I@15db9742 (주소값)
System.out.println(Arrays.toString(items)); // 출력: [5, 10]

 

 

요약

  • ArrayList: 값 자체가 저장되며, println()로 출력할 때 값들이 나열되어 출력
  • 배열 (int[]): 기본적인 println() 호출 시 주소값이 출력되며, 값을 보려면 Arrays.toString()을 사용해야 한다.

미리 메모리에 공간을 추가해두는 고정 배열의 경우 당연하다고 생각하면 빠르게 이해할 수 있을 듯 하다..