https://softeer.ai/practice/7628
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()을 사용해야 한다.
미리 메모리에 공간을 추가해두는 고정 배열의 경우 당연하다고 생각하면 빠르게 이해할 수 있을 듯 하다..
'알고리즘' 카테고리의 다른 글
[softeer] 8단 변속기 JAVA | 배열 초기화, else if (0) | 2024.11.02 |
---|---|
[백준] 수열 JAVA (0) | 2024.11.01 |
[softeer] 근무시간, 바이러스 JAVA | scanner, substring, Integer.parseInt, Int scanner.nextInt(), (0) | 2024.10.31 |
[프로그래머스] 귤 고르기 python | Counter 함수로 dic 생성하기 (0) | 2024.10.30 |
[코딩테스트 합격자 되기 10] 집합 (1) | 2024.10.18 |