일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- IF문
- 스캐너클래스
- 파이썬프로그래밍기초
- C언어
- 유비쿼터스
- FOR문
- 자바
- 반복문
- java프로그래밍
- java
- 하드웨어
- 백준
- 변수
- 백준알고리즘
- 자료구조
- IFELSE
- 알고리즘
- 스캐너
- 데이터
- Scanner class
- IF
- error
- Scanner
- for
- 함수
- MySQL
- 1차원배열
- Spring
- 기본
- 배열
Archives
- Today
- Total
정리하고기록하자
백준 (JAVA) - 최소,최대 (10818) 본문
반응형
백준 - 알고리즘 1차원배열 최소,최대 (10818) 문제
문제 : N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력 : 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int min = 1000000; // 모든정수는 - 100000 보다 크거나 같다
int max = -1000000; // 모든 정수는 100000 보다 작거나 같다
}
}
우선 문제에서 N개의 정수가 주어지고,
N은 1,000,000 보다 작거나 크고
N은 -1,000,000 보다 크거나 같다.
N개의 정수가 주어졌을때 배열의 크기를 선언했다.
int a = sc.nextInt(); // 첫번째 줄의 정의한 값
int[] arr = new int[a]; // 배열의 크기 선언
최소값, 최대값 가져오기는 구글링을 해서 코드를 입력했다.
for(int i = 0 ; i < arr.length; i ++) { // 배열 크기 만큼 반복문 돌린다.
arr[i] = sc.nextInt();
// -------------- 최소값 최대값 조회 구글링 -------
if(max < arr[i]) {
max = arr[i];
}
if(min > arr[i]) {
min = arr[i];
}
// -----------------------------------------
}
배열의 크기 만큼 반복문을 돌려서 최소값,최대값을 구한다.
System.out.println(min +" "+ max);
마지막으로 출력했다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int min = 1000000; // 모든정수는 - 100000 보다 크거나 같다
int max = -1000000; // 모든 정수는 100000 보다 작거나 같다
int a = sc.nextInt(); // 첫번째 줄의 정의한 값
int[] arr = new int[a]; // 배열의 크기 선언
for(int i = 0 ; i < arr.length; i ++) { // 배열 크기 만큼 반복문 돌린다.
arr[i] = sc.nextInt();
// -------------- 최소값 최대값 조회 구글링 -------
if(max < arr[i]) {
max = arr[i];
}
if(min > arr[i]) {
min = arr[i];
}
// -----------------------------------------
}
System.out.println(min +" "+ max);
}
}
여기까지가 내가 생각한 알고리즘.
구글링 결과 더 쉽게 구하는 방법이 있었다..
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int arr[] = new int[num];
// 배열의 길이만큼 돌면서 i에 입력값을 받는다
for (int i=0; i<arr.length; i++) {
arr[i] = sc.nextInt();
}
// sort를 사용해 배열을 정렬한다
Arrays.sort(arr);
// 정렬된 배열의 가장 작은 수
// 0번 인덱스의 것 = min 값
// 배열길이 -1 인덱스의 것 = max 값
System.out.println(arr[0] + " " + arr[num - 1]);
}
}
왜 이렇게 생각을 하지 못했을까..
속도 차이도 엄청 난다.
반응형
'백준 - 알고리즘' 카테고리의 다른 글
백준 (JAVA) - 숫자의 개수 (2577) (0) | 2021.11.17 |
---|---|
백준 (JAVA) - 최댓값 (2562) (2) | 2021.11.16 |
백준 (JAVA) - X보다 작은 수 (10871) (0) | 2021.11.09 |
백준 (JAVA) - 별찍기 - 2 (2349) (0) | 2021.11.08 |
백준 (JAVA) - 별찍기 -1 (2348) (0) | 2021.11.07 |