[백준 2075] N번째 큰 수
문제
유형
- 자료구조
- 우선순위 큐
풀이
유형이 우선순위 큐라고 나와있지만 문제에서 주어진 자신의 한 칸 위에 수보다 크다는 특징을 이용하여 표의 제일 밑에서 부터 비교하면서 올라오는 방식으로 풀이하였다.
일단 각 열의 제일 밑 인덱스를 가지는 배열을 하나 만들고 그 배열의 인덱스들에 있는 값을 비교하였다. 만약 2번째 인덱스의 값이 제일 클 때 위 배열의 2번째 인덱스 값을 하나 낮춰서 그 다음 값과 비교할 수 있게 하였다.
말로는 설명이 잘 안되지만 코드를 보면 바로 알 수 있다.
코드
#include <bits/stdc++.h>
const int dx[4] = { 1,0,-1,0 };
const int dy[4] = { 0,-1,0,1 };
using namespace std;
int n;
int arr[1501][1501];
int v[1501];
int main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) cin >> arr[i][j];
v[i] = n - 1;
}
for (int i = 0; i < n; i++) {
pair<int, int> m = { -1e9 - 1, 0 };
for (int j = 0; j < n; j++) {
if (v[j] >= 0 && m.first < arr[v[j]][j]) {
m.first = arr[v[j]][j];
m.second = j;
}
}
v[m.second]--;
if (i == n - 1) cout << m.first;
}
return 0;
}
Author And Source
이 문제에 관하여([백준 2075] N번째 큰 수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@asdsa2134/백준-2075-N번째-큰-수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)