문제
https://www.acmicpc.net/problem/1283
풀이
우선 단축키의 등록 여부를 확인하기 위한 캐릭터 Set을 하나 준비한다.
이후 입력을 받으면 공백을 기준으로 String 을 분리하여 String 배열을 만든다.
우선 나뉜 단어의 첫번째 문자가 단축키가 되는지 확인하기 위해 문자열 반복문을 돌며 첫번째 단어가 Set에 추가되어있는지 확인한다. 이 때 대소문자를 구분하지 않는다고 했기에 uppercase 나 lowercase 로 통일하여 검사한다.
만약 첫단어가 추가되지 않은 단축키면 [ ] 괄호를 추가하여 해당 문자열을 업데이트 하고, 출력시켜준다.
첫단어가 추가되지 않았다면 2중 반복문을 돌면서 추가되지 않은 단축키를 찾으면 된다.
코드
import java.util.*;
import java.io.*;
public class Main {
public void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Set<Character> alpha = new HashSet<>();
for (int i = 0; i < n; i++) {
String line = br.readLine();
String[] lines = line.split(" ");
boolean option = false;
// 우선 첫번째 단어를 확인한다.
for (int j = 0; j < lines.length; j++) {
if(alpha.contains(Character.toUpperCase(lines[j].charAt(0)))){
continue;
}
// 알파벳을 추가한다.
option = true;
alpha.add(Character.toUpperCase(lines[j].charAt(0)));
lines[j] = "[" + lines[j].charAt(0) + "]" + lines[j].substring(1);
break;
}
if(!option) {
for (int j = 0; j < lines.length; j++) {
for (int k = 0; k < lines[j].length(); k++) {
if (alpha.contains(Character.toUpperCase(lines[j].charAt(k)))) {
continue;
}
alpha.add(Character.toUpperCase(lines[j].charAt(k)));
lines[j] = lines[j].substring(0, k) + "[" + lines[j].charAt(k) + "]" + lines[j].substring(k + 1);
option = true;
break;
}
if (option) break;
}
}
// 결과 출력
for(int j=0; j< lines.length; j++){
System.out.print(lines[j] + " ");
}
System.out.println();
}
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
후기
'백준' 카테고리의 다른 글
1238 - 파티 (Java) (0) | 2025.01.11 |
---|---|
1516 - 게임 개발 (Java) (0) | 2025.01.08 |
18405 - 경쟁적 전염 (Java) (0) | 2024.12.02 |
2239 - 스도쿠 (Java) (0) | 2024.11.28 |
22251 - 빌런 호석 (Java) (0) | 2024.11.26 |