
두 수의 최대값/최소값을 구한다.
// 두 수 중 더 큰 값 반환
int max = Math.max(10, 20); // 20
// 두 수 중 더 작은 값 반환
int min = Math.min(10, 20); // 10
int, long, float, double 지원Math.max(10, 20); // int 타입 비교
Math.max(10L, 20L); // long 타입 비교
Math.max(1.5f, 2.5f); // float 타입 비교
Math.max(1.5, 2.5); // double 타입 비교
// ❌ 인자를 3개 이상 전달할 수 없음
Math.max(10, 20, 30);
int[] arr = {1, 2, 3};
// ❌ 배열 전체를 비교할 수 없음
Math.max(arr);
// ❌ String 비교 불가
Math.max("apple", "banana");
String 비교는 compareTo() 사용
// 10, 20, 30 중 최대값
int max = Math.max(Math.max(10, 20), 30);
// 변수 3개 중 최대값
int max = Math.max(a, Math.max(b, c));
가장 많이 사용하는 템플릿
int[] arr = {5, 3, 7, 1, 9};
// 첫 번째 원소를 기준값으로 설정
int max = arr[0];
int min = arr[0];
for (int num : arr) {
// 현재까지의 최대값과 현재 원소 비교
max = Math.max(max, num);
// 현재까지의 최소값과 현재 원소 비교
min = Math.min(min, num);
}
O(N)
배열을 한 번만 순회한다.
이미 데이터가 존재
// 첫 번째 원소를 기준으로 비교 시작
int max = arr[0];
int min = arr[0];
아직 비교할 값이 없음
// 가능한 가장 작은 값으로 시작
int max = Integer.MIN_VALUE;
// 가능한 가장 큰 값으로 시작
int min = Integer.MAX_VALUE;
// 현재 최대값과 새 값을 비교하여 갱신
answer = Math.max(answer, value);
// 현재 최소값과 새 값을 비교하여 갱신
answer = Math.min(answer, value);
예시
int answer = Integer.MIN_VALUE;
for (int num : arr) {
// 더 큰 값을 발견하면 answer 갱신
answer = Math.max(answer, num);
}
int answer = Integer.MAX_VALUE;
for (int cost : costs) {
// 더 작은 값을 발견하면 answer 갱신
answer = Math.min(answer, cost);
}
문자열 숫자는 반드시 정수로 변환 후 비교
String[] arr = {"10", "2", "33", "4"};
// 첫 번째 문자열을 숫자로 변환하여 초기값 설정
int max = Integer.parseInt(arr[0]);
int min = Integer.parseInt(arr[0]);
for (String s : arr) {
// String → int 변환
int num = Integer.parseInt(s);
// 최대값 갱신
max = Math.max(max, num);
// 최소값 갱신
min = Math.min(min, num);
}
"10".compareTo("2")
문자열 비교는 숫자 비교가 아니라 사전순 비교이다.
// "10" < "2" 로 판단됨
따라서 숫자 비교를 하려면 반드시
Integer.parseInt()
를 사용해야 한다.
프로그래머스에서 자주 나오는 형태
String s = "1 2 3 4";
// 공백 기준으로 분리
String[] arr = s.split(" ");
// split 결과는 String[] 이므로 숫자로 변환 필요
int max = Integer.parseInt(arr[0]);
int min = Integer.parseInt(arr[0]);
for (String str : arr) {
// String → int 변환
int num = Integer.parseInt(str);
// 최대값 갱신
max = Math.max(max, num);
// 최소값 갱신
min = Math.min(min, num);
}
// 두 수 비교
Math.max(a, b); // 더 큰 값 반환
Math.min(a, b); // 더 작은 값 반환
// 배열 최대/최소
int max = arr[0];
int min = arr[0];
// 탐색 문제 (초기값)
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
// 최대/최소 갱신
max = Math.max(max, value);
min = Math.min(min, value);
// 문자열 숫자 변환
Integer.parseInt(str);