https://www.acmicpc.net/problem/2469
๋ฌธ์
k๋ช ์ ์ฐธ๊ฐ์๋ค์ด ์ฌ๋ค๋ฆฌ ํ๊ธฐ๋ฅผ ํตํ์ฌ ์ด๋ค ์์๋ฅผ ๊ฒฐ์ ํ๋ค. ์ฐธ๊ฐ์๋ค์ ์ํ๋ฒณ ๋๋ฌธ์ ์ฒซ k๊ฐ๋ก ํํ๋๋ฉฐ, ์ฌ๋ค๋ฆฌ ํ๊ธฐ๋ฅผ ์์ํ ๋์ ์์๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํญ์ ์ํ๋ฒณ ์์๋๋ก์ด๋ค.
k=10 ์ธ ์๋ฅผ ๋ค์ด ๋ณด์. 10๋ช ์ A, B, C, D, E, F, G, H, I, J ์ฐธ๊ฐ์๋ค์ด ์ฌ๋ค๋ฆฌ ํ๊ธฐ๋ฅผ ์ค๋นํ๋ค. ์๋ ๊ทธ๋ฆผ์ 10๊ฐ์ ์ธ๋ก ์ค๊ณผ 5๊ฐ์ ๊ฐ๋ก ์ค์ ๊ฐ์ง๊ณ ์๋ ์ฌ๋ค๋ฆฌ์ ํ ์๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
์ด ์ฌ๋ค๋ฆฌ์์ ์ ์ ์ ๊ฐ๋ก ๋ง๋๊ฐ ์์์, ๊ตต์ ๊ฐ๋ก ์ค์ ์ ์์ผ๋ก ๊ฑด๋๊ฐ ์ ์๋ ๊ฐ๋ก ๋ง๋๊ฐ ์์์ ๋ํ๋ด๊ณ ์๋ค.
๋ฐ๋ผ์ ์์ ์ ์๋ ์ฌ๋ค๋ฆฌ๋ฅผ ํ๋ฉด ๊ทธ ์ต์ข ๋๋ฌ๋ ์์๋ ์ผ์ชฝ์ผ๋ก๋ถํฐ A, C, G, B, E, D, J, F, I, H ๊ฐ ๋๋ค.
์ฌ๋ค๋ฆฌ ํ๊ธฐ๋ ์ธ๋ก ๋ง๋๋ฅผ ํ๊ณ ๋ด๋ ค์ค๋ ์ค์ ๊ฐ๋ก๋ง๋๋ฅผ ๋ง๋๋ฉด ๊ทธ ์ชฝ์ผ๋ก ์ฎ๊ฒจ ๊ฐ๋ฉด์ ๋๊น์ง ๋ด๋ ค๊ฐ๋ ๊ณผ์ ์ด๋ค. ๋ฐ๋ผ์ ์ฌ๋ค๋ฆฌ ํ๊ธฐ์ ๊ท์น ํน์ฑ์ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ ๊ฐ๋ก ๋ง๋๊ฐ ์ง์ ์ฐ๊ฒฐ๋ ์๋ ์์ผ๋ฏ๋ก ์ด ์ํฉ์ ์ด ๋ฌธ์ ์์ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค.
์ฐ๋ฆฌ๋ ํ๋์ ๊ฐ๋ก ์ค์ด ๊ฐ์ถ์ด์ง ์ฌ๋ค๋ฆฌ๋ฅผ ๋ฐ์์ ๊ทธ ์ค์ ๊ฐ ์นธ์ ๊ฐ๋ก ๋ง๋๋ฅผ ์ ์ ํ ๋ฃ์ด์ ์ฐธ๊ฐ์๋ค์ ์ต์ข ์์๊ฐ ์ํ๋ ์์๋๋ก ๋์ค๋๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
์ ๋ ฅ์์ ์ฌ๋ค๋ฆฌ์ ์ ์ฒด ๋ชจ์์ ๊ฐ ์ค์ ์๋ ๊ฐ๋ก ๋ง๋์ ์ ๋ฌด๋ก ํํ๋๋ค. ๊ฐ ์ค์์ ๊ฐ๋ก ๋ง๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ‘*’(๋ณ)๋ฌธ์, ์์ ๊ฒฝ์ฐ์๋ ‘-’(๋นผ๊ธฐ) ๋ฌธ์๋ก ํ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ถ์ด์ง ํน์ ๊ฐ๋ก ์ค์ ๊ธธ์ด k-1์ธ ‘?’ (๋ฌผ์ํ) ๋ฌธ์์ด๋ก ํ์๋์ด ์๋ค.
์ ๋ ฅ
์ฒซ ์ค์๋ ์ฐธ๊ฐํ ์ฌ๋์ ์ k๊ฐ ๋์จ๋ค(3 ≤ k ≤ 26). ๊ทธ ๋ค์ ์ค์๋ ๊ฐ๋ก ๋ง๋๊ฐ ๋์ผ ์ ์ฒด ๊ฐ๋ก ์ค์ ์๋ฅผ ๋ํ๋ด๋ n์ด ๋์จ๋ค(3 ≤ n ≤ 1,000). ๊ทธ๋ฆฌ๊ณ ์ธ ๋ฒ์งธ ์ค์๋ ์ฌ๋ค๋ฆฌ๋ฅผ ํ๊ณ ๋ ํ ๊ฒฐ์ ๋ ์ฐธ๊ฐ์๋ค์ ์ต์ข ์์๊ฐ ๊ธธ์ด k์ธ ๋๋ฌธ์ ๋ฌธ์์ด๋ก ๋ค์ด์จ๋ค.
k์ n, ๊ทธ๋ฆฌ๊ณ ๋์ฐฉ์์ ๋ฌธ์์ด์ด ๋ํ๋ ๋ค์, ์ด์ด์ง๋ n๊ฐ์ ์ค์๋ ์์ ์ค๋ช ํ ๋ฐ์ ๊ฐ์ด ‘*’์ ‘-’ ๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด k-1์ธ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๊ทธ ์ค ๊ฐ์ถ์ด์ง ๊ฐ๋ก ์ค์ ๊ธธ์ด๊ฐ k-1์ธ ‘?’ ๋ฌธ์์ด๋ก ํ์๋์ด ์๋ค.
์ถ๋ ฅ
์ ๋ ฅ ํ์ผ ์ธ ๋ฒ์งธ ์ค์์ ์ง์ ํ ๋์ฐฉ์์๊ฐ ํด๋น ์ฌ๋ค๋ฆฌ์์ ๋ง๋ค์ด์ง ์ ์๋๋ก ๊ฐ์ถ์ด์ง ๊ฐ๋ก ์ค์ ๊ตฌ์ฑํด์ผ ํ๋ค.
์ฌ๋ฌ๋ถ์ ๊ฐ์ถ์ด์ง ๊ฐ๋ก ์ค์ ์ํ๋ฅผ ์ฌ๊ตฌ์ฑํ์ฌ ์ด๋ฅผ ‘*’(๋ณ) ๋ฌธ์์ ‘-’(๋นผ๊ธฐ) ๋ฌธ์๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด k-1์ธ ๋ฌธ์์ด๋ก ๋ง๋ค์ด ์ถ๋ ฅํ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ทธ ๊ฐ์ถ์ด์ง ๊ฐ๋ก ์ค์ ์ด๋ป๊ฒ ๊ตฌ์ฑํด๋ ์ํ๋ ์์๋ฅผ ์ป์ ์ ์๋ ๊ฒฝ์ฐ๋ ์๋ค. ์ด ๊ฒฝ์ฐ์๋ ‘x’(์๋ฌธ์ ์์ค)๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด k-1์ธ ๋ฌธ์์ด์ ์ถ๋ ฅํด์ผ ํ๋ค.
ํ์ด
์ด๋ฐ ์์ผ๋ก ?๊ฐ ๋์ค๋ ํ (lineIdx)
๊น์ง ์ฌ๋ค๋ฆฌ ํ๊ธฐ๋ฅผ ์์์ ๋ถํฐ lineIdx - 1 ๊น์ง ํ๋ 1๏ธโฃ, ๋ฐ์์ ๋ถํฐ lineIdx + 1 ๊น์ง ๋์ธ 2๏ธโฃ ์งํํ๋ค.
๐ board[i][j] ๊ฐ '-' ๋ผ๋ฉด alphabet[i] ์ [i+1]์ ์๋ก SWAP
๐ ๋ง์ง๋ง ํ ์ค์ด ๋จ์๊ธฐ ๋๋ฌธ์ 1๏ธโฃ๊ณผ 2๏ธโฃ์ 0 ~ k-1 ์์น์ ์ํ๋ฒณ๋ค์ ๊ฐ๊ฑฐ๋ 1๊ฐ๋ง ์ฐจ์ด๊ฐ ๋์ผ๋ง ํ๋ค.
๐ ๊ฐ์ผ๋ฉด sb์ '*' ์ถ๊ฐ, [i] ์ [i+1] ์ด ๊ฐ๋ค๋ฉด '-' ์ถ๊ฐํ๊ณ SWAP
๐ ์์น๊ฐ ๋ ์ด์ ์ฐจ์ด๊ฐ ๋๋ฉด ๋ถ๊ฐ๋ฅํ ์ฌ๋ค๋ฆฌ ํ๊ธฐ ์ด๋ฏ๋ก k-1๊ฐ์ 'x'๋ฅผ ์ถ๋ ฅ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main_BOJ_2469_์ฌ๋ค๋ฆฌํ๊ธฐ {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int k = Integer.parseInt(br.readLine());
int n = Integer.parseInt(br.readLine());
char[] startChar = new char[k];
for(int i = 0 ; i < k ; i++){
startChar[i] = (char)('A' + i);
}
char[] destinationChar = br.readLine().toCharArray();
char[][] map = new char[n][k-1];
int lineIdx = 0; // '?' ๊ฐ ๋์ค๋ ํ
for(int i = 0 ; i < n ; i++){
map[i] = br.readLine().toCharArray();
if(map[i][0] == '?')
lineIdx = i;
}
for(int i = 0 ; i < lineIdx ; i++){
for(int j = 0 ; j < k-1 ; j++){
if(map[i][j] == '-'){
char tmp = startChar[j];
startChar[j] = startChar[j+1];
startChar[j+1] = tmp;
}
}
}
for(int i = n-1; i > lineIdx ; i--){
for(int j = 0 ; j < k-1 ; j++){
if(map[i][j] == '-'){
char tmp = destinationChar[j];
destinationChar[j] = destinationChar[j+1];
destinationChar[j+1] = tmp;
}
}
}
for(int i = 0 ; i < k-1; i++){
if(startChar[i] == destinationChar[i]){
sb.append("*");
}
else if(startChar[i] == destinationChar[i+1] || startChar[i+1] == destinationChar[i]){
sb.append("-");
char tmp = startChar[i];
startChar[i] = startChar[i+1];
startChar[i+1] = tmp;
}
// ๋ ์นธ ์ด์ ๋จ์ด์ ธ ์๋ค๋ฉด ๋ถ๊ฐ๋ฅ
else{
for(int j = 0 ; j < k-1 ; j++)
System.out.print("x");
System.out.println();
return;
}
}
System.out.println(sb);
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 1967 ] ํธ๋ฆฌ์ ์ง๋ฆ ( ์๋ฐ / JAVA ) (0) | 2021.10.20 |
---|---|
[ ๋ฐฑ์ค / BOJ 2729 ] ์ด์ง์ ๋ง์ ( ์๋ฐ / JAVA ) (0) | 2021.10.19 |
[ ๋ฐฑ์ค / BOJ 1987 ] ์ํ๋ฒณ ( ์๋ฐ / JAVA ) (0) | 2021.10.19 |
[ ๋ฐฑ์ค / BOJ 20168 ] ๊ณจ๋ชฉ ๋์ฅ ํธ์ - ๊ธฐ๋ฅ์ฑ ( ์๋ฐ / JAVA ) (0) | 2021.10.19 |
[ ๋ฐฑ์ค / BOJ 2374 ] ๊ฐ์ ์๋ก ๋ง๋ค๊ธฐ ( JAVA / ์๋ฐ ) (0) | 2021.10.11 |