[๋ฐฑ์ค] ๐ฅ 2075 N๋ฒ์งธ ํฐ ์
๐ ๋์ด๋
๐ฅ Silver 2
๐ ๋ฌธ์
https://www.acmicpc.net/problem/2075
๐ ํ์ด
์ด ๋ฌธ์ ๋ฅผ ์ฒ์ ๋ณด์๋ง์ ๋ ์๊ฐ์ ๋ฐ๋ก Two Pointer ์ ์ฐ์ฅ์ ์ด๋ผ๋ ์๊ฐ์ด์๋ค.
n x n ์ ๋ฐฐ์ด์ค ๋ง์ง๋ง์ ์๋ ๊ฐ๋ค๋ง ์๋ก ๋น๊ตํด์ ํฐ ๊ฐ์ ๋นผ๋ค๊ฐ n๋ฒ์งธ ๊ฐ์ ์ถ๋ ฅํ๋ฉด ๋๋ ๋ฌธ์ ์ฟ๋ค.
๋ฐ๋ผ์, int[][] table ๊ณผ int[] tableIndex ๋ฐฐ์ด์ ๋ง๋ค๊ณ , tableIndex
์ ๊ฐ์ n์ผ๋ก ์ด๊ธฐํ ํด์ฃผ์๋ค.
for
๋ฌธ์ด ํ๋ฒ ๋๋๋ง๋ค tableIndex
์ ์๋ ๊ฐ์ table
์ ์ฃผ์๊ฐ์ผ๋ก ์ฌ์ฉํ์ฌ, ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ง ์ฃผ์์ ํด๋นํ๋ tableIndex
๊ฐ์ -1
ํด์ฃผ์๋ค.
์ด์ ์ค๋ฒ ๋ฌธ์ ๋ค์ ๊ฑฐ๋ฌํ๊ฒ ํด๊ฒฐ์ด ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค.
๐ Code
package DS;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class N2075 {
static int[][] table;
static int[] tableIndex;
static int n;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
table = new int[n + 1][n];
tableIndex = new int[n];
Arrays.fill(tableIndex, n);
for (int i = 0; i < n; i++) {
table[0][i] = -1200000000;
}
for (int i = 1; i < n + 1; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < n; j++) {
table[i][j] = Integer.parseInt(st.nextToken());
}
}
int result = 0;
for (int i = 0; i < n; i++) {
result = FindMax();
}
System.out.println(result);
}
public static int FindMax() {
int flag = 0;
int max = -1200000000;
for (int i = 0; i < n; i++) {
if (max < table[tableIndex[i]][i]) {
flag = i;
max = table[tableIndex[i]][i];
}
}
tableIndex[flag] -= 1;
return max;
}
}
package (์ด๋ฆ); ๋ฅผ ๋๊ณ , class ์ด๋ฆ์ Main
์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐