Coding Test/BaekJoon

[BaekJoon Java] 최댓값(2562), Array와 ArrayList 차이점

momong'-' 2020. 12. 26. 17:05

www.acmicpc.net/problem/2562

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net


  • 문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

  • 예제 입출력

  • 풀이
package step.array.one_dimensional;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
 * 예를 들어, 서로 다른 9개의 자연수
 * 3, 29, 38, 12, 57, 74, 40, 85, 61
 * 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
 * @author imj10
 *
 */
public class Max {	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		List<Integer> list = new ArrayList<Integer>();
		int max = 0;
		int seq = 0;
		
		for ( int i=1; i <= 9; i ++ ) {
			int a = sc.nextInt();
			list.add(a);
			
			if ( max < a ) {
				max = a;
				seq = i;
			}
		}
		
		System.out.println(max + "\n" + seq);
	}
}

 

  • 결과


  • 추가설명

문제를 풀면서 궁금증이 생겼다.

array를 처음 배울때만 쓰고 잘 쓰지 않았던거 같다.

항상 ArrayList를 썼는데 그냥 배열을 사용하는 이유가 있을 거 같은데 뭐였을까 궁금해졌다.

그래서 차이점을 찾아봤다.

 

배열(Array)와 ArrayList 차이점

1. 배열(Array)

 - 배열의 크기: 불변적. 변경 불가

 - 초기화 시 메모리에 할당되어 상대적으로 속도가 빠르다.

--  Array 생성
int[] arr = new int[5];

 

2. ArrayList

 - 배열의 크기: 가변적

 - 저장하는 데이터 수에 따라 크기 변경

 - 추가 시 add(), 삭제 시 remove() 사용

 - 데이터 추가 삭제 시 메모리를 재할당하기 때문에 속도가 상대적으로 느리다.

-- ArrayList 생성
List<Integer> list = new ArrayList<Integer>();