# 문제
# 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ2941_v1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine(); // 입력받기
String[] arr = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="}; // 크로아티아 저장
int count = 0;
int result = 0;
for (int i = 0; i < arr.length; i++) { // arr 길이 만큼 반복
while (input.contains(arr[i])) { // input에 arr[i]가 있으면 true
count++; // 있으면 count 1씩 증가 해주기
// input에 arr[i] 처음에 있는 것만 제거하고 ,(쉼표)로 바꾸기
input = input.replaceFirst(arr[i], ",");
}
}
// input에 있는 ,(쉼표)를 전부 없애기
input = input.replaceAll(",", "");
result = count + input.length(); // 제거한 크로아티아 수와 input 길이 더하기
System.out.println(result); // 출력
br.close();
}
}
# 입/출력 결과
# 과정
- 입력은 BufferedReader 클래스 사용
- String[] arr에 크로아티아 문자 배열로 저장
- int count와 int result 0으로 초기화
- for문 사용해서 계산
- : arr 길이 만큼 반복
- : while문 사용해서 input에 arr[i]가 있으면 input에 arr[i]를 제거하고 ,(쉼표)로 바꾸기
- for문 밖에서 input에 모든 ,(쉼표)를 제거하고 "" 그 자리에 빈 문자를 추가
- result에 count와 input의 길이를 더하여 저장
- result 출력
- BufferedReader .close() 해주기
# 메모
- 처음에 replace로 했는데 c=c= 이걸 입력하였을 때 2가 출력되어야하는데 안 되었다. 그래서 디버깅해보니까 한번에 c=가 사라지는 거였다. 그래서 chat-gpt한테 replace로 하였는데 c=c= 이 두 값이 같이 사라졌다, 나는 c= 먼저 사라지고 그 다음 것도 사라지게 하고 싶다고 하니까 replaceFirst를 알려주었다. 그래서 그때 처음으로 replaceFirst라는 것을 알게 되었다.
- 그리고 if문으로 하니까 c= 하나만 제거가되어서 곰곰히 생각해보니 크로아티아 알파벳이 없기 전까지 무한으로 반복해야하니까 while문으로 하는 게 맞는 거 같아서 while문으로 수정하니 원하는 데로 동작을 했다.
'코딩 테스트' 카테고리의 다른 글
[코딩테스트] 백준 25206번: 너의 평점은 (0) | 2025.06.21 |
---|---|
[코딩테스트] 백준 1316번: 그룹 단어 체커 (0) | 2025.06.20 |
[코딩테스트] 백준 1157번: 단어 공부 (0) | 2025.06.18 |
[코딩테스트] 백준 10988번: 팰린드롬인지 확인하기 (0) | 2025.06.17 |
[코딩테스트] 백준 2444번: 별 찍기 - 7 (0) | 2025.06.16 |