
-Code
import java.io.*;
import java.util.*;
public class BOJ1283 {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine());
Set<Character> checkSet = new HashSet<>();
for (int i = 0; i < cnt; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
ArrayList<String> words = new ArrayList<>();
while (st.hasMoreTokens()) {
words.add(st.nextToken());
}
int targetWordIdx = -1;
int targetCharIdx = -1;
// 첫 글자가 단축키가 되는지 확인
for (int j = 0; j < words.size(); j++) {
char now = Character.toLowerCase(words.get(j).charAt(0));
if (!checkSet.contains(now)) {
checkSet.add(now);
targetWordIdx = j;
targetCharIdx = 0;
break;
}
}
// 첫글자 모두 단축키가 안되면 검사
if (targetWordIdx == -1) {
for (int j = 0; j < words.size(); j++) {
String word = words.get(j);
for (int k = 0; k < word.length(); k++) {
char now = Character.toLowerCase(word.charAt(k));
// 왼쪽부터 검사해 단축키 가능한지 검사
if (!checkSet.contains(now)) {
checkSet.add(now);
targetWordIdx = j;
targetCharIdx = k;
break;
}
}
// 단축키 찾았으면 탈출
if (targetWordIdx != -1) {
break;
}
}
}
// 계산한 index를 기준으로 만들어 출력
StringBuilder answer = new StringBuilder();
for (int j = 0; j < words.size(); j++) {
String word = words.get(j);
for (int k = 0; k < word.length(); k++) {
char ch = word.charAt(k);
if (targetWordIdx == j && targetCharIdx == k) {
answer.append("[").append(ch).append("]");
} else {
answer.append(ch);
}
}
answer.append(" ");
}
System.out.println(answer);
}
br.close();
}
}
처음에 접근 방법은 StringToken을 이용해 계산하는 등 뼈대는 좋았으나 1차원 좌표로 하려다 target index 계산에서 문제가 생겼습니다. 1차원으로 풀려다 힌트인 2차원 좌표를 사용하라는 것을 보고 위와 같이 2개의 word와 character의 index를 선언하고 이를 통해 작성해 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 10280번 Pizza voting (0) | 2026.03.14 |
|---|---|
| [프로그래머스/Java] 성격 유형 검사하기 (0) | 2026.03.13 |
| [백준/Java] 27951번 옷걸이 (0) | 2026.03.13 |
| [프로그래머스/Java] [PCCE 기출문제] 10번 / 데이터 분석 (0) | 2026.03.13 |
| [백준/Java] 35367번 Snakey String (0) | 2026.03.12 |