TIL(Today I Learned)
99클럽 코테 스터디 2일차 TIL + [백준] 10820 : 문자열 분석
zincah
2025. 4. 1. 23:12
반응형
오늘의 학습 키워드
- 문자열
- 비교
- 입력 방식
문제 탐색하기
문제
문제 풀이 설계하기
입력받은 문자열을 단어 하나씩 조건에 맞는지 비교하면 되는 문제입니다. 단어가 알파벳 소문자, 대문자, 숫자, 공백 중 하나임을 조건을 통해서 확인하고 각 조건일때 카운트를 증가시키는 로직을 구현해서 최종적으로 입력받은 문자열에 대해 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분하여 출력해주면 됩니다.
이때 문자열의 갯수인 N이 주어지지 않는 다는 것도 유의해야하는데
String input;
while((input = br.readLine()) != null){
위 코드 처럼 작성하게되면 입력이 종료되었을때 이 while-loop가 종료된다고 합니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String input;
while((input = br.readLine()) != null){
int[] arr = new int[4];
for(int i=0; i<input.length(); i++){
char ch = input.charAt(i);
if(ch == ' '){
arr[3]++;
}else if(ch >= 48 && ch < 58){
arr[2]++;
}else if(ch >= 65 && ch < 91){
arr[1]++;
}else if(ch >= 97 && ch < 123){
arr[0]++;
}
}
sb.append(arr[0]).append(" ").append(arr[1]).append(" ").append(arr[2]).append(" ").append(arr[3]).append("\n");
}
System.out.println(sb.toString());
}
}
오늘의 회고
br.readLine() == null 이라는 것이 더이상 입력을 하지 않았을 때를 검증할 수 있다는 것을 알 수 있는 문제라서 좋았습니다.
char 자료형을 Ascii 코드를 활용하면 소문자, 대문자 등을 숫자로 비교할 수 있어서 그렇게 문제를 풀었는데
isUpperCase(), isLowerCase(), isDigit()라는 조건을 통해서 문제를 풀 수 있다는 것도 알게되었습니다.
반응형