반응형
https://www.acmicpc.net/problem/10820
- 문제
- 문제 풀이
백준 10820번 문자열 분석은 브론즈 2 난이도의 구현 및 문자열 문제이다. 이 문제에서는 문자열 N개가 주어지고 각 문자열마다 소문자, 대문자, 숫자, 그리고 공백의 개수를 출력하면 된다.
우선 이 문제에서는 입력의 개수가 주어지지 않는다. 따라서, 문자열 입력을 받을 때 다음과 같이 하면 된다.
String s;
while ((s = br.readLine()) != null) {
//코드
}
위와 같이 코드를 작성하면 입력이 종료되면 이 while-loop이 종료된다.
우선 int형 변수 small, capital, number, 그리고 space를 선언해 준다. small은 소문자의 개수, capital은 대문자의 개수, number는 숫자의 개수, 그리고 space는 공백의 개수다.
이제 각 문자열마다 iterate 하면서 각 인덱스에 있는 character가 어떤 건지 확인한 다음에 맞는 거의 개수를 1씩 증가시켜 주고 문자열이 끝나면 그 개수를 출력해 주면 된다.
각 character가 소문자인지, 대문자인지, 숫자인지 아니면 공백인지는 다음과 같은 코드로 확인할 수 있다.
char c; //Character
if (c == ' ') space++; //공백인지 확인
if (Character.isUpperCase(c)) capital++; //대문자인지 확인
if (Character.isLowerCase(c)) small++; //소문자인지 확인
if (Character.isDigit(c)) number++; //숫자인지 확인
자세한 코드는 아래에 있는 코드를 참고하면 되겠다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
String s;
while ((s = br.readLine()) != null) {
int small = 0; //소문자 개수
int capital = 0; //대문자 개수
int number = 0; //숫자 개수
int space = 0; //공백 개수
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ' ') space++;
if (Character.isUpperCase(c)) capital++;
if (Character.isLowerCase(c)) small++;
if (Character.isDigit(c)) number++;
}
sb.append(small + " " + capital + " " + number + " " + space + "\n");
}
System.out.print(sb);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 1373번 : 2진수 8진수 – JAVA [자바] (0) | 2023.02.27 |
---|---|
[백준] 2338번 : 긴자리 계산 – JAVA [자바] (0) | 2023.02.27 |
[백준] 10824번 : 네 수 – JAVA [자바] (0) | 2023.02.19 |
[백준] 11655번 : ROT13 – JAVA [자바] (0) | 2023.02.14 |
[백준] 11047번 : 동전 0 – JAVA [자바] (0) | 2022.12.02 |
댓글