본문 바로가기
Language/JAVA

[JAVA] 백준_1차원 배열(10818, 2562, 3052)

by 전전긍긍 2023. 11. 9.

10810. 최소, 최대

문제

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

소스코드
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int N = in.nextInt();
        int[] arr = new int[N];

        for (int i = 0; i < N; i++) {
            arr[i] = in.nextInt();
        }

        in.close();
        Arrays.sort(arr);
        System.out.println(arr[0] + " " + arr[N-1]);
    }
}

2562. 최댓값

문제

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

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

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

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

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

소스코드
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int[] arr = new int[9];
        int Max = 0;
        int total = 0;

        for (int i = 0; i < 9; i++) {
            arr[i] = in.nextInt();
        }

        for (int i = 0; i < 9; i++) {
            if (arr[i] > Max) {
                total = i;
                Max = arr[i];
            }
        }
        in.close();
        Arrays.sort(arr);
        System.out.println(arr[8]);
        System.out.println(total + 1);
    }
}

3052. 나머지

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

소스코드

처음에는 나머지가 다를 때마다 +1씩했는데, 내가 원하는 값이 나오지 않았다. 그 이유는 arr[i]와 arr[j]가 값이 다르면 +1하는데, 만약 break하고선 같은 값이 나오면 처리해줄 수 없기 때문이다. 그래서 반대로 10개 중에서 빼는 걸로 했다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int[] arr = new int[10];
        //10개의 수 입력받기
        for (int i = 0; i < 10; i++) {
            arr[i] = in.nextInt() % 42;
        }

        int total = 10;

        for(int i = 0; i < 10; i++) {
            for (int j = i + 1; j < arr.length; j++ ) {
                if (arr[i] == arr[j]) {
                    total--;
                    break;
                }
            }
        }
        System.out.println(total);
    }
}

느낀점

배열 어려워서 피했는데, 생각보다 재밌다.