Codeup 1095 review

calis_ws·2023년 5월 6일
0
post-custom-banner

https://codeup.kr/problem.php?id=1095

출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.

입력

번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다.
n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다.

출력

출석을 부른 번호 중에 가장 빠른 번호를 1개만 출력한다.

import java.util.Scanner;

public class Codeup1095 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        int[] arr = new int[size];
        int index = 0;

        for (int i = 0; i < size; i++) {
            arr[index++] = sc.nextInt();      // 문제의 핵심
        }

        int minValue = arr[0];                // 멘토님이 말씀하신 부분
        for (int i = 0; i < size; i++) {
            if (minValue > arr[i]) minValue = arr[i];
        }
        System.out.printf("%d", minValue);
    }
}

이 문제는 입력되는 값 중에 가장 빠른, 그러니까 가장 작은 수를 출력하는 문제이다. 최대값 최소값 구하기 문제의 이해가 어려워 멘토님께 도움을 청했다.

첫 번째는

int minValue = arr[0];

최소값을 구할 때는 주어진 값 내에서 비교하기 위해 단순히 첫 입력값(배열이면 0번째값)을 주면 된다.

두번째는

if (minValue > arr[i]) minValue = arr[i];

for문 조건식에서 이 비교 과정을 반복한다.

minValue = 20, arr[i] = 15 라고 가정하면 true -> arr[i] = 15;
minValue = 13, arr[i] = 15 라고 가정하면 false -> arr[i] = 15;

비교가 끝나면 결과 값은 최소값으로 정해진다.
조건식의 부호가 바뀌면 최대값을 구할 수 있다.

멘토님의 상세한 답변 덕분에 이해가 쉬웠다.
다시 한번 감사하다고 말씀 드리고 싶다.

profile
반갑습니다람지
post-custom-banner

0개의 댓글