문제(출처: https://www.acmicpc.net/problem/5093)
< Letter Replacement >
문제 풀이
이미 나왔던 문자인지 확인하여 나왔던 문자라면 HashMap을 활용하여 대체한다.
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.HashMap;
import java.util.HashSet;
public class _5093_ { // Letter Replacement
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "";
while (!(str = bf.readLine()).equals("#")) {
HashSet<Character> set = new HashSet<>();
HashMap<Character, Character> map = new HashMap<>();
String result = "";
int idx = 1;
for (int i = 0; i < str.length(); i++) {
if (!set.contains(Character.toLowerCase(str.charAt(i)))) {
set.add(Character.toLowerCase(str.charAt(i)));
result += str.charAt(i);
} else {
if (map.containsKey(Character.toLowerCase(str.charAt(i)))) {
result += map.get(Character.toLowerCase(str.charAt(i)));
} else {
if (idx == 1) {
map.put(Character.toLowerCase(str.charAt(i)), '*');
} else if (idx == 2) {
map.put(Character.toLowerCase(str.charAt(i)), '?');
} else if (idx == 3) {
map.put(Character.toLowerCase(str.charAt(i)), '/');
} else if (idx == 4) {
map.put(Character.toLowerCase(str.charAt(i)), '+');
} else if (idx == 5) {
map.put(Character.toLowerCase(str.charAt(i)), '!');
}
result += map.get(Character.toLowerCase(str.charAt(i)));
idx += 1;
}
}
}
bw.write(result + "\n");
}
bw.flush();
}
}
변수)
str : 입력 문자열
result : 출력 문자열
idx : 몇 번째 반복된 문자인지
set : 현재까지 나온 문자
map : HashMap <문자, 대체 문자>
#가 입력되기 전까지 다음 과정을 반복한다.
1) 문자열을 탐색하며 한 번도 나오지 않은 문자라면 set에 추가 및 result에 문자를 추가한다.
2) 이미 나온 문자라면 HashMap을 탐색하여 key값으로 있다면 result에 value를 더해준다. key값으로 없다면 HashMap에 추가하고 result에도 추가한다.
result를 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 31047_Warehouse (1) | 2025.01.23 |
---|---|
[Baekjoon] 9357_Eligibility (1) | 2025.01.22 |
[Baekjoon] 6973_Dynamic Dictionary Coding (0) | 2025.01.21 |
[Baekjoon] 29934_Important Messages (1) | 2025.01.20 |
[Baekjoon] 9951_Word Extraction (1) | 2025.01.17 |