본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1095 : [기초-종합] 이상한 출석 번호 부르기3

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1095 : [기초-종합] 이상한 출석 번호 부르기3 (자바, JAVA)입니다.

intro

Question

문제 설명

입력

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

출력

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

예시

  • 입력 :
    10
    10 4 2 3 6 6 7 9 8 5
  • 출력 :
    2

Solution (풀이)

  •  풀이 1 : 메모리 31520, 시간 240
public class Answer1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] a = new int[sc.nextInt()];    // 총 출석을 부를 숫자만큼 배열 길이 선언

        for (int i=0; i<a.length; i++) {
            a[i] = sc.nextInt();    // 순차적으로 출석 부른 숫자를 배열에 저장
        }

        Arrays.sort(a);    // 기본타입 배열 오른차순 정렬 
        System.out.print(a[0]);    // 정렬 후 첫번째 index 값 출력

        sc.close();
    }
}
  • 풀이 2 : 메모리 12688, 시간 76
public class Answer2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 총 출석을 부를 숫자 변수에 저장
        int count = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int minNumber = 23;    // 출석 부를수 있는 숫자중 가장 큰 수
        for (int i=0; i<count; i++) {    // 출석 부를 횟수만큼
            int number = Integer.parseInt(st.nextToken());
            if (minNumber > number) { // 출석 숫자가 minNumber보다 낮으면
                minNumber = number;    // minNumber에 저장
            }
        }
        System.out.println(minNumber);
    }
}
  • 1번 풀이는 출석을 부르는 번호를 배열에 다 저장을 했다가, 나중에 판별을 하는 것이다.
  • 2번 풀이는 굳이 배열을 사용하지 않고, 부른 숫자 중에 가장 낮은 숫자만 기억하면 되는 것이다.

Ranking(순위)

  • 주석이 많아서 코드 길이가 긴 것으로 나온것은 알지만.. 다른분들은 어떻게 저렇게 빠르게 풀었는지 ㅠㅠ 혹시 이 글을 보시는 중에 더 나은 코드를 아시는분은 연락주시면 감사하겠습니다! :)
반응형