๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/8896)
< ๊ฐ์ ๋ฐ์ ๋ณด >
๋ฌธ์ ํ์ด
๊ฐ ๋ผ์ด๋๋ง๋ค ๋ก๋ด์ ๋ฌธ์์ด์ ๋ณด๊ณ ๊ฐ์๋ฐ์๋ณด์๊ฒ ์ด๊ธฐ๋ ๊ฒฝ์ฐ์ธ์ง ์ง๋ ๊ฒฝ์ฐ์ธ์ง ๋ฌด์น๋ถ์ธ์ง ํ๋จํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;
import java.util.Set;
public class _8896_ { // ๊ฐ์ ๋ฐ์ ๋ณด
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(bf.readLine());
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(bf.readLine());
String str = bf.readLine();
char arr[][] = new char[n][str.length()];
boolean visited[] = new boolean[n];
for (int j = 0; j < n; j++) {
for (int k = 0; k < str.length(); k++) {
arr[j][k] = str.charAt(k);
}
if (j == n - 1)
break;
str = bf.readLine();
}
Set<Character> set = new HashSet<>();
int cnt = 0;
for (int j = 0; j < str.length(); j++) {
cnt = 0;
for (int k = 0; k < n; k++) {
if (visited[k]) {
continue;
}
cnt += 1;
set.add(arr[k][j]);
}
if (cnt == 1) {
break;
}
if (set.size() == 2) {
char a = '0', b = '0';
char result = 0;
for (char x : set) {
if (a != '0' && b == '0')
b = x;
if (a == '0')
a = x;
}
if ((a == 'R' && b == 'S') || (a == 'S' && b == 'R')) {
result = 'S';
} else if ((a == 'S' && b == 'P') || (a == 'P' && b == 'S')) {
result = 'P';
} else if ((a == 'R' && b == 'P') || (a == 'P' && b == 'R')) {
result = 'R';
}
for (int k = 0; k < n; k++) {
if (!visited[k] && arr[k][j] == result) {
visited[k] = true;
}
}
}
set.clear();
}
if (cnt != 1) {
cnt = 0;
for (int j = 0; j < n; j++) {
if (!visited[j]) {
cnt += 1;
}
}
}
if (cnt == 1) {
for (int j = 0; j < n; j++) {
if (!visited[j]) {
bw.write((j + 1) + "\n");
break;
}
}
} else {
bw.write("0\n");
}
}
bw.flush();
}
}
๋ณ์)
t : ํ ์คํธ ์ผ์ด์ค ๊ฐ์
n : ์ฐธ์ฌํ๋ ๋ก๋ด์ ์
str : ๊ฐ ๋ก๋ด์ ์ ์ฅ๋์ด ์๋ ๋ฌธ์์ด
arr : n๊ฐ์ ๋ก๋ด์ ๋ฌธ์์ด
visited : ๋ก๋ด์ด ์ด์์๋์ง ์ฌ๋ถ
set : ๊ฐ ๋ผ์ด๋๋ง๋ค ๋ก๋ด์ด ๋ด๋ ๋ฌธ์
cnt : k ๋ผ์ด๋ ํ ์ด์์๋ ๋ก๋ด ์
ํ ์คํธ ์ผ์ด์ค ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ํ ์คํธ ์ผ์ด์ค ๊ฐ์๋งํผ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ๋ก๋ด์ ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๋ก๋ด์ ์๋งํผ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
2) ๊ฐ ๋ผ์ด๋๋ง๋ค ์ด์์๋ ๋ก๋ด์ ๋ฌธ์๋ฅผ HashSet์ ์ถ๊ฐํ๋ค.
3) HashSet์ size๊ฐ 2๋ผ๋ฉด ๊ฐ์๋ฐ์๋ณด์ ์น์๋ฅผ ํ๋จํ ์ ์์ผ๋ฏ๋ก size๊ฐ 2์ผ ๋ ๋ฌธ์ ๊ฐ ๋ ๊ฐ๋ฅผ a, b์ ์ ์ฅํ๋ค.
4) ๊ฐ์๋ฐ์๋ณด๋ฅผ ํตํด ์ง๋ ๋ฌธ์๊ฐ ๋ฌด์์ธ์ง ๊ตฌํ ํ ๊ฒ์์์ ์ง ๋ก๋ด์ด ๊ฒ์์ ์ฐธ์ฌํ ์ ์๋๋ก visited๋ฅผ true๋ก ์ ์ฅํ๋ค.
5) ๋ชจ๋ ๋ผ์ด๋๊ฐ ๋๋ ํ visited ๋ฐฐ์ด์ ํ์ํ์ฌ ์ด์์๋ ๋ก๋ด์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
6) ๋ง์ฝ ์ด์์๋ ๋ก๋ด์ ๊ฐ์๊ฐ 1๊ฐ๋ผ๋ฉด ๋ก๋ด์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค. ์ด์์๋ ๋ก๋ด์ ๊ฐ์๊ฐ 1๊ฐ๊ฐ ์๋๋ผ๋ฉด 0์ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 10434_ํ๋ณตํ ์์ (1) | 2024.03.22 |
---|---|
[Baekjoon] 6219_์์์ ์๊ฒฉ (0) | 2024.03.21 |
[Baekjoon] 1083_์ํธ (0) | 2024.03.19 |
[Baekjoon] 12931_๋ ๋ฐฐ ๋ํ๊ธฐ (0) | 2024.03.18 |
[Baekjoon] 16938_์บ ํ ์ค๋น (1) | 2024.03.15 |