더 많이 실패하기

백준 10820번 문자열 분석 자바 Java (☆공부 239일차) 본문

알고리즘/백준

백준 10820번 문자열 분석 자바 Java (☆공부 239일차)

김발자~ 2023. 3. 26. 16:47
반응형

10820 문자열 분석

https://www.acmicpc.net/problem/10820

 

10820번: 문자열 분석

문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있

www.acmicpc.net

 

 

 


백준 10820번 문제 문자열 분석


문제


 

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
1 초 256 MB 27347 11139 9191 41.232%

문제

문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.

각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.

입력

첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.

출력

첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.

예제 입력 1

This is String
SPACE    1    SPACE
 S a M p L e I n P u T     
0L1A2S3T4L5I6N7E8

예제 출력 1

10 2 0 2
0 10 1 8
5 6 0 16
0 8 9 0

 

 

 


과정 생각해보기


 

 

https://gimbalja.tistory.com/168

 

공부 90일차: 백준 10820번 문자열 분석 자바 Java

10820 문자열 분석 https://www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.

gimbalja.tistory.com

 

앞에 2문제 건너뛰고..
4달 전에 풀었던 문제

 

접근은 똑같고 StringBuilder를 사용해서 시간과 메모리를 줄였다

 

 
 

정답 인정 코드


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 str = null;    // ★
        
        while((str = br.readLine()) != null) {    // ★
            int lower = 0;
            int upper = 0;
            int num = 0;
            int space = 0;
            
            for(int i = 0; i < str.length(); i++) {
                char ch = str.charAt(i);
                
                if(ch >= 'a' && ch <= 'z') {    // 소문자
                    lower++;
                }else if(ch >= 'A' && ch <= 'Z') {    // 대문자
                    upper++;
                }else if(ch == ' ') {    // 공백 (조건 짧음)
                    space++;
                }else {
                    num++;
                }
            }
            
            // 출력
            sb.append(lower).append(' ').append(upper).append(' ').append(num).append(' ').append(space).append('\n');
        }
        
        br.close();
        System.out.println(sb);
 
    }
 
}
 
cs

 

 

 


전에 뭐 이리 많이 틀렸지

반응형
Comments