자바/알고리즘 문제 풀이

백준/25305 커트라인

backend dev 2022. 12. 3.

커트라인

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB 11008 7124 6605 66.329%

문제

2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 N명의 학생들이 응시했다.

이들 중 점수가 가장 높은 k명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.

커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.

입력

첫째 줄에는 응시자의 수 N과 상을 받는 사람의 수 k가 공백을 사이에 두고 주어진다.

둘째 줄에는 각 학생의 점수 x가 공백을 사이에 두고 주어진다.

출력

상을 받는 커트라인을 출력하라.

제한

  •  1≤N≤1000
  •  1≤k≤N
  •  0≤x≤10000

예제 입력 1 복사

5 2
100 76 85 93 98

예제 출력 1 복사

98

시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다.


풀이

점수값들을 받고 내림차순으로 정렬 후 커트라인-1의 인덱스값을 출력한다.

public class Main {

    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws IOException {

        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        List<Integer> scoreList = new ArrayList<>();

        st = new StringTokenizer(br.readLine());
        while (st.hasMoreTokens()) {
            scoreList.add(Integer.parseInt(st.nextToken()));
        }

        scoreList.sort(Comparator.reverseOrder());
        bw.write(scoreList.get(k - 1)+"\n");

        bw.flush();
        bw.close();
    }
}

 

시간복잡도

그나마 가장 높아보이는 시간복잡도가 sort -> O(NlogN)

 

총 시간복잡도 O(NlogN)?

 

다른사람 풀이

1. StringTokenizer를 사용하지않고 Split으로 공백기준 분리

 

 

정리한 개념

https://keeeeeepgoing.tistory.com/55

 

[Java] Split 메소드 문자열 자르기

String[] split(String regex) split함수는 입력받은 정규표현식 또는 특정문자를 기준으로 문자열을 나누어 배열에 저장하여 리턴한다. 정규표현식 개념 -> https://hbase.tistory.com/160 String temp = "010-1234-5789-11

keeeeeepgoing.tistory.com

 

 

 

 

'자바 > 알고리즘 문제 풀이' 카테고리의 다른 글

백준/10989 수 정렬하기 3  (0) 2022.12.03
백준/2751 수 정렬하기 2  (0) 2022.12.03
백준/2587 대표값2  (0) 2022.12.03
백준/2750 수 정렬하기  (0) 2022.12.03
백준/1439 뒤집기  (0) 2022.10.29

댓글