한글 프로그램의 메뉴에는 총 N개의 옵션이 있다. 각 옵션들은 한 개 또는 여러 개의 단어로 옵션의 기능을 설명하여 놓았다. 그리고 우리는 위에서부터 차례대로 각 옵션에 단축키를 의미하는 대표 알파벳을 지정하기로 하였다. 단축키를 지정하는 법은 아래의 순서를 따른다.
첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하의 알파벳으로 표현된다. 단어는 공백 한 칸으로 구분되어져 있다. N개의 줄에 각 옵션을 출력하는데 단축키로 지정된 알파벳은 좌우에 []
괄호를 씌워서 표현한다.
입력 | 출력 |
---|---|
5 | |
New | [N]ew |
Open | [O]pen |
Save | [S]ave |
Save As | Save [A]s |
Save All | Sa[v]e All |
8 | |
New window | [N]ew window |
New file | New [f]ile |
Copy | [C]opy |
Undo | [U]ndo |
Format | F[o]rmat |
Font | Fon[t] |
Cut | Cut |
Paste | [P]aste |
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class one1283 {
public void solution() throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
List<String[]> words = new ArrayList<>();
boolean[] shortcut = new boolean[26];
for (int i = 0; i <= n; i++) {
String[] word = sc.nextLine().split(" ");
words.add(word);
}
for (int i = 1; i <= n; i++) {
boolean done = false;
String[] word = words.get(i);
// 첫 글자 검사
for (int j = 0; j < word.length; j++) {
String w = word[j];
int ascii = calAscii(w.charAt(0));
if (!shortcut[ascii]) {
shortcut[ascii] = true;
String temp = "[";
temp += w.charAt(0);
temp += "]";
temp += w.substring(1);
word[j] = temp;
done = true;
break;
}
}
if (done) continue;
for (int j = 0; j < word.length; j++) {
String w = word[j];
for (int k = 1; k < w.length(); k++) {
int ascii = calAscii(w.charAt(k));
if (ascii < 0 || ascii >= 26) continue;
if (shortcut[ascii]) continue;
shortcut[ascii] = true;
String temp = w.substring(0, k);
temp += "[";
temp += w.charAt(k);
temp += "]";
temp += w.substring(k + 1);
word[j] = temp;
done = true;
break;
}
if (done) break;
}
}
for (int i = 1; i <= n; i++) {
String[] word = words.get(i);
for (String w : word) {
System.out.printf("%s ", w);
}
System.out.println();
}
}
public int calAscii(char ch) {
int ascii = (int) ch;
if (ascii >= 97) {
ascii -= 97;
} else {
ascii -= 65;
}
return ascii;
}
public static void main(String[] args) throws IOException {
new one1283().solution();
}
}