정코딩
Home
  • 분류 전체보기 (421)
    • 알고리즘 (382)
      • Baekjoon (301)
      • SW Academy (39)
      • JUNGOL (7)
      • 프로그래머스 (33)
    • CS (4)
      • 알고리즘 (1)
    • 공부 (19)
      • JAVA (6)
      • BackEnd (4)
      • FrontEnd (3)
      • 프로젝트 (6)
    • 일상 (16)
      • 기타 (16)
Home
  • 분류 전체보기 (421)
    • 알고리즘 (382)
      • Baekjoon (301)
      • SW Academy (39)
      • JUNGOL (7)
      • 프로그래머스 (33)
    • CS (4)
      • 알고리즘 (1)
    • 공부 (19)
      • JAVA (6)
      • BackEnd (4)
      • FrontEnd (3)
      • 프로젝트 (6)
    • 일상 (16)
      • 기타 (16)
블로그 내 검색
Portfolio

정코딩

동의대학교 컴퓨터공학과 SSAFY 6기

  • 알고리즘/Baekjoon

    Baekjoon 2075 N번째 큰 수 JAVA

    2022. 7. 29.

    by. soonil

     

    2075번: N번째 큰 수

    첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

    www.acmicpc.net

    문제

    N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자.

    12 7 9 15 5
    13 8 11 19 6
    21 10 26 31 16
    48 14 28 35 25
    52 20 32 41 49

    이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다.

     

    조건

    [입력]

    첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.

     

    [출력]

    첫째 줄에 N번째 큰 수를 출력한다.

     

    풀이

    해당 문제는 2차원 배열에 숫자가 주어졌을 때 N번째 큰 수를 출력하는 문제다.

    우선순위 큐를 이용하여 해결했으며 우선순위 로직은 아래와 같다.

     

    1. 먼저 우선순위 큐를 선언함과 동시에 람다식으로 내림차순 정렬을 한다.

    2. 입력값을 큐에 넣어준다.

    3. N-1의 크기만큼 큐에서 값을 빼낸다.

    4. 큐에서 값을 빼내서 출력한다.

     

    코드
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.PriorityQueue;
    import java.util.StringTokenizer;
    
    public class Main {
        public static void main(String[] args) throws Exception{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(br.readLine());
            PriorityQueue<Integer> pq = new PriorityQueue<>((a,b) -> b - a); // 우선순위 큐를 내림차순으로 람다식으로 정렬한다.
    
            for (int i = 0; i < N; i++) {
                StringTokenizer st = new StringTokenizer(br.readLine());
                for (int j = 0; j < N; j++) { // 우선순위 큐에 숫자를 모두 넣어준다.
                    pq.add(Integer.parseInt(st.nextToken()));
                }
            }
    
            for (int i = 0; i < N-1; i++) { // 이전값만큼은 빼내고 
                pq.poll();
            }
            System.out.println(pq.poll()); // 출력값 출력
        }
    }

     

     

    GitHub - JUNGSOONIL/Algorithm-JAVA: 알고리즘 문제 해결 자바 소스 코드

    알고리즘 문제 해결 자바 소스 코드. Contribute to JUNGSOONIL/Algorithm-JAVA development by creating an account on GitHub.

    github.com

     

    728x90

    '알고리즘 > Baekjoon' 카테고리의 다른 글

    Baekjoon 6593 상범 빌딩 JAVA  (0) 2022.08.01
    Baekjoon 7569 토마토 JAVA  (0) 2022.07.27
    Baekjoon 2799 블라인드 JAVA  (0) 2022.07.27
    Baekjoon 16165 걸그룹 마스터 준석이 JAVA  (0) 2022.07.22
    Baekjoon 11660 구간 합 구하기 5 JAVA  (0) 2022.07.21

    댓글

    관련글

    • Baekjoon 6593 상범 빌딩 JAVA 2022.08.01
    • Baekjoon 7569 토마토 JAVA 2022.07.27
    • Baekjoon 2799 블라인드 JAVA 2022.07.27
    • Baekjoon 16165 걸그룹 마스터 준석이 JAVA 2022.07.22
    맨 위로
전체 글 보기
  • Baekjoon
  • Solved
  • Github
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
soonil

티스토리툴바