# 문제
주소: https://www.acmicpc.net/problem/1152
# 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ1152_v1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine(); // 입력 값 받아서 저장
int num = 0; // 단어 개수 초기화
if (input != null && !input.trim().isEmpty()) { // 입력 값이 null이 아니고 비어있지 않다면 실행
String[] words = input.trim().split("\\s+"); // 연속된 공백을 처리할 때 사용 \\s+
num = words.length; // 단어 몇 개인지 저장
}
System.out.println(num); // 출력
br.close();
}
}
# 입/출력 결과
# 과정
- BufferedReader 객체 생성
- String input에 입력값 받아서 저장
- int num에 단어 개수 담을 거라 초기화 시키기
- if문 사용하기
- : input이 null이 아니고 빈 문자열이 아니라면 실행
- : String[] words 생성하여 .trim() 사용해서 앞뒤 공백 자르고,
- : .split("\\s+") 사용해서 연속된 공백도 깔끔하게 잘라내어 저장
- : num에 words 길이 저장. (단어 개수)
- nums 출력하기
- BufferedReader .close() 하기
# 메모
- .split(" ") 이렇게 공백 기준으로 나누어 저장할 때 사용했는데, 정확하게 연속된 공백이 있을 수도 있으니 이를 해결하는 방법은 .split("\\s+") 이렇게 작성하는 것이었다.
- 처음에 입력 받은 값을 String[] input = br.readLine().trim().split(" ") 로 했다가 틀렸었다. 어느 부분에서 틀린 것인지 전혀 모르겠어서 chat-gpt 한테 물어보니 EOF 또는 빈문자열을 체크해야한다고 했다.
- EOF가 무엇인지 찾아보고 정리해보았다.
- EOF: End Of File, 파일이나 입력의 끝
- 발생: 입력이 더 이상 존재하지 않을 때 발생
- 예: 값 입력하지 않고 EOF 신호를 보냈을 때.
- macOS/Linux: Ctrl+D
- Windows: Ctrl+Z + Enter
- 생소한 것이 나와서 배우는 재미가 있었다. 까먹지 말고 연속된 공백은 .split("\\s+") 이렇게 작성하고, 정확히 입력을 어떻게 하는지 제시가 된 것이 아니라면 EOF와 빈문자열인지 체크하는 코드를 작성하기.
'코딩 테스트' 카테고리의 다른 글
[코딩테스트] 백준 5622번: 다이얼 (0) | 2025.06.15 |
---|---|
[코딩테스트] 백준 2908번: 상수 (0) | 2025.06.15 |
[코딩테스트] 백준 2675번: 문자열 반복 (0) | 2025.06.13 |
[코딩테스트] 백준 10809번: 알파벳 찾기 (0) | 2025.06.13 |
[코딩테스트] 백준 11720번: 숫자의 합 (0) | 2025.06.11 |