| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 스프링부트
- 프로그래머스
- TestCode
- 자료구조
- 연관관계
- 제로베이스
- 서버
- SpringSecurity
- queue
- restTemplate
- error
- 개발자
- ORM
- 백엔드공부
- SpringBoot
- spring boot
- 컴퓨터 공학
- JWT
- array
- 핵심가이드
- 백엔드스쿨
- actuator
- 백엔드
- spring
- 컴퓨터 구조
- JPA
- Java
- LinkedList
- 백준
- QueryDSL
Archives
- Today
- Total
be_better
[백준] 10818번 - 최소, 최대 본문
목차
💎 문제 링크
https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
📝 문제

✍🏻 입력 & 출력

🤔 풀기 전에 생각하기
입력받은 값들을 int 배열에 넣어놓고 값을 하나하나 비교해서 최솟값과 최댓값을 구하는 문제라고 이해
하지만 기준 숫자를 두고 크고 작은 숫자들을 찾는 문제는 아니기 때문에
오름차순이나 내림차순 정렬을 하면 양 끝 인덱스의 값들만 조회하면 해결되는 문제
- 입력받는 값들을 배열에 넣고 정렬 후 0번 인덱스는 최솟값, 배열의 마지막 인덱스는 최댓값으로 문제 해결
- 입력받는 값들을 배열에 넣고 모든 값을 조회하며 최솟값, 최댓값을 각각 직접 구해주면 문제 해결
두가지 방법을 다 구현해봤다.
✨ 풀이
🧶 Arrays.sort() 를 이용한 풀이
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int inputNum = scanner.nextInt(); // 정수의 개수
int[] numbers = new int[inputNum]; // 입력받는 정수 배열
// 입력받은 숫자 numbers 에 삽입
for (int i = 0; i < inputNum; i++) {
numbers[i] = scanner.nextInt();
}
// Arrays.sort() 를 이용해 배열 오름차순 정렬
Arrays.sort(numbers);
int min = numbers[0]; // 최솟값은 0번째 인덱스
int max = numbers[numbers.length - 1]; // 최댓값은 제일 마지막 인덱스
System.out.println(min + " " + max);
}
}

🧶 for문으로 min, max을 계속 갱신하는 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int inputNum = scanner.nextInt(); // 정수의 개수
int[] numbers = new int[inputNum]; // 입력받는 정수 배열
// 입력받은 숫자 numbers 에 삽입
for (int i = 0; i < inputNum; i++) {
numbers[i] = scanner.nextInt();
}
int min = 1000001; // min 값을 최대 입력값인 1000000보다 1 큰 수로 초기화
int max = -1000001; // max 값을 최소 입력값인 -1000000보다 1 작은 수로 초기화
// for-each로 원소값을 min, max와 비교
for (int i : numbers) {
if (i < min) { // i값이 최솟값을 의미하는 min 보다 작으면
min = i; // min 을 i로 갱신
}
if (i > max) { // i값이 최댓값을 의미하는 max 보다 크면
max = i; // max 를 i로 갱신
}
}
System.out.println(min + " " + max);
}
}

'코딩테스트 > 백준' 카테고리의 다른 글
| [백준] 10807번 - 개수 세기 (0) | 2023.08.15 |
|---|---|
| [백준] 2830번 - 행성 X3 (0) | 2023.08.15 |
| [백준] 24174번 - 힙 정렬 2 (0) | 2023.08.13 |
| [백준] 1158번 - 요세푸스 문제 (0) | 2023.08.11 |
| [백준] 1021번 - 회전하는 큐 (0) | 2023.08.08 |