📌 문제
문제명 | 백준 1152 - 단어의 개수 |
Link | https://www.acmicpc.net/problem/1152 |
분류 | 문자열, 구현 |
난이도 | B2 |
풀이 일자 | 2025-04-14 |
📌 문제 탐색하기
영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
문제에서 필요한 변수
inputLine : 문제에서 입력받는 문자열
splitLine : 입력 받은 문자열을 공백 기준으로 나눈 문자열 배열
count : 문자열에 존재하는 단어의 개수
위의 문제에서 입력은 처음과 마지막이 공백으로 시작할 수 있다고 제시했기에 inputLine에서 trim() 또는 strip()를 사용하여 맨 앞이랑 맨 뒤에 공백을 제거하는게 중요함
해당 문제에 시간 복잡도는 문자열의 길이 O(N)이고 문자열의 길이는 1,000,000을 넘지 않으므로 시간안에 해결가능
📌 코드 설계하기
1. 문자열 입력받기
2. 입력받은 문자열을 strip() 함수를 사용하여 맨 앞과 맨뒤에 공백 제거
3. split()함수를 사용하여 공백을 기준으로 단어를 분리하기
4. 문자열에 단어가 존재할때 count변수에 단어 개수 담기
5. 결과값 출력
📌 시도 회차 수정 사항 (Optional)
없음
📌 정답 코드
package org.example.day08;
import java.io.*;
/**
* description : 백준 1152 - 단어의 개수
* packageName : org.example.day08
* fileName : Day08_BaekJoon_Q1152
* author : kimjongha
* date : 25. 4. 14.
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 25. 4. 14. kimjongha 최초 생성
*/
public class Day08_BaekJoon_Q1152 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 1. 문자열 입력받기
// 2. 입력받은 문자열을 strip() 함수를 사용하여 맨 앞과 맨뒤에 공백 제거
String inputLine = br.readLine().strip();
// 3. split()함수를 사용하여 공백을 기준으로 단어를 분리하기
String[] splitLine = inputLine.split(" ");
int count = 0;
// 4. 문자열에 단어가 존재할때 count변수에 단어 개수 담기
if(!inputLine.isEmpty()) {
count = splitLine.length;
}
// 5. 결과값 출력
bw.write(count + "\n");
bw.flush();
bw.close();
}
}
📌 느낀점
trim() 또는 strip()를 사용하여 맨 앞과 맨 뒤에 공백을 제거하는데 strip()은 유니코드 문자 공백도 제거함 단, 자바 버전에 따라 사용불가 할 수 있음
strip()는 자바 11버전부터 사용 가능
'알고리즘, 자료구조' 카테고리의 다른 글
[코딩 챌린지 11기 새싹반] 백준 2587 - 대표값2 (Java) (1) | 2025.04.16 |
---|---|
[코딩 챌린지 11기 새싹반] 백준 2750 - 수 정렬하기 (Java) (2) | 2025.04.15 |
[코딩 챌린지 11기 새싹반] 백준 10988 - 팰린드롬인지 확인하기 (Java) (1) | 2025.04.13 |
[코딩 챌린지 11기 새싹반] 백준 2738 - 행렬 덧셈 (Java) (1) | 2025.04.12 |
[코딩 챌린지 11기 새싹반] 백준 10818 - 최소, 최대 (Java) (1) | 2025.04.11 |