문제 : boj2941
필요 알고리즘 개념
- 구현, 문자열
- 문자열을 다루는 구현 문제이다.
※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.
풀이
이 문제의 관건은 크로아티아 알파벳을 변경해서 사용한 부분을 하나의 알파벳으로 세주면 된다. 문자의 갯수만 알면 되므로 다음과 같이 생각해보자.
"ljes=njak" -> "?e??ak"
(lj, s=, nj 가 ?로 치환되었다.)
즉, 어떤 문자인지는 상관없고 아무튼 크로아티아 알파벳이 쓰인 부분을 하나의 Character로 변경한다면 남은 문자열의 길이가 답이 된다.
String[] wd = {"c=","c-","dz=","d-","lj","nj","s=","z="};
...
for (String w : wd) // 각 크로아티아 알파벳에 대해
s = s.replaceAll(w, ","); // 해당 크로아티아 알파벳을 전부 1 Character로 변경한다.
System.out.print(s.length()); // 이후 남은 문자열의 길이가 답이다.
코드 : github
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String[] wd = {"c=","c-","dz=","d-","lj","nj","s=","z="};
String s = new Scanner(System.in).next();
for (String w : wd) s = s.replaceAll(w, ",");
System.out.print(s.length());
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 17114 - 하이퍼 토마토 (java) (0) | 2022.12.07 |
---|---|
[자바] 백준 7595 - Triangles (java) (0) | 2022.12.07 |
[자바] 백준 23027 - 1번부터 문제의 상태가…? (java) (0) | 2022.12.05 |
[자바] 백준 25305 - 커트라인 (java) (0) | 2022.12.04 |
[자바] 백준 25630 - 팰린드롬 소떡소떡 (java) (0) | 2022.12.03 |
댓글