-
[백준 / JAVA] 문자열 분석 10820알고리즘/문제풀기 2019. 7. 1. 21:25
문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
입력
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
출력
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
나의 코드
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String test = ""; while(sc.hasNext()) { // 입력된 토큰이 있으면 true int small = 0; int large = 0; int num = 0; int space = 0; test = sc.nextLine(); for(int i=0; i<test.length(); i++) { if(test.charAt(i) == ' ') space++; else if('a'<=test.charAt(i) && 'z'>=test.charAt(i)) small++; else if('A'<=test.charAt(i) && 'Z'>=test.charAt(i)) large++; else if(0<=(int)test.charAt(i)-48 && 9>=(int)test.charAt(i)-48) num++; } System.out.println(small + " " + large + " " + num + " " + space); } sc.close(); } }
Scanner의 hasNext함수를 사용해서 입력을 받아주었다.
hasNext()는 다음 토큰의 유무를 반환해주는 함수이다. 다음 토큰이 있으면 true를 반환한다.
줄 별로 test에 저장을 한다.
test를 char로 변환해서 하나씩 비교를 해준다.
숫자일 때, char를 다시 int로 반환해 주어야 하는데 char형의 '8'은 숫자로 56이기 때문에 48을 빼주어야한다.
'알고리즘 > 문제풀기' 카테고리의 다른 글
[백준 / JAVA] 네 수 10824 (0) 2019.07.02 [백준 / JAVA] ROT13 11655 (0) 2019.07.02 [백준 / JAVA] 알파벳 찾기 10809 (0) 2019.07.01 [백준 / JAVA] 알파벳 개수 10808 (0) 2019.06.30 [백준 / JAVA] 조세퍼스 문제 1158 (0) 2019.06.30 댓글