문제 : boj23027
필요 알고리즘 개념
- 구현, 문자열
- 문제에 제시된대로 구현해주면 된다.
※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.
풀이
자바에서 어떠한 문자가 포함되어있는지 확인은 String s에 대해 s.contains("A") 와 같은 식으로 가능하다. 그리고 특정 문자를 모두 특정 문자로 변경하는 것은 s = s.replaceAll("B", "A"); ( 모든 B를 A로 변경 ) 과 같이 가능하다.
위의 사항들을 안다면(물론 charAt()으로 각 Character를 확인해서 풀어도 되고 방법은 많다.) 문제에서 제시된 1~4를 모두 코드로 구현해주기만 하면 된다.
String s = br.readLine();
// 편지의 내용 S에 'A'가 있다면 S에 있는 'B', 'C', 'D', 'F'를 모두 'A'로 변경한다.
if (s.contains("A")) {
String[] target = new String[]{"B","C","D","F"};
for (String t : target)
s = s.replaceAll(t, "A");
System.out.println(s);
return;
}
// 'A'가 없고 'B'가 있다면 S에 있는 'C', 'D', 'F'를 모두 'B'로 변경한다.
if (s.contains("B")) {
String[] target = new String[]{"C","D","F"};
for (String t : target)
s = s.replaceAll(t, "B");
System.out.println(s);
return;
}
// 'A'와 'B'가 없고 'C'가 있다면 S에 있는 'D', 'F'를 모두 'C'로 변경한다.
if (s.contains("C")) {
String[] target = new String[]{"D","F"};
for (String t : target)
s = s.replaceAll(t, "C");
System.out.println(s);
return;
}
// 'A', 'B'와 'C'가 모두 없다면 S에 있는 모든 문자를 'A'로 변경한다.
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++)
sb.append('A');
System.out.println(sb);
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
if (s.contains("A")) {
String[] target = new String[]{"B","C","D","F"};
for (String t : target)
s = s.replaceAll(t, "A");
System.out.println(s);
return;
}
if (s.contains("B")) {
String[] target = new String[]{"C","D","F"};
for (String t : target)
s = s.replaceAll(t, "B");
System.out.println(s);
return;
}
if (s.contains("C")) {
String[] target = new String[]{"D","F"};
for (String t : target)
s = s.replaceAll(t, "C");
System.out.println(s);
return;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++)
sb.append('A');
System.out.println(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 7595 - Triangles (java) (0) | 2022.12.07 |
---|---|
[자바] 백준 2941 - 크로아티아 알파벳 (java) (0) | 2022.12.07 |
[자바] 백준 25305 - 커트라인 (java) (0) | 2022.12.04 |
[자바] 백준 25630 - 팰린드롬 소떡소떡 (java) (0) | 2022.12.03 |
[자바] 백준 1253 - 좋다 (java) (1) | 2022.12.02 |
댓글