문제
문자열 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
음 일단은 str 받아오고
- charAt(i)으로 반복해서 문장 내 단어나 공백 받아와서
- if문으로 돌리고 싶은데
받아온 문장을 어떻게 charAt(i)으로 반복문을 만들지 ?????????????
1. 1차 코드
package WEEK2;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int c1 =0;
int c2 =0;
int c3 =0;
int c4 =0;
for(int i=0; i<str.length(); i++){
if(str.charAt(i)>= 'a' && str.charAt(i)<= 'z'){
c1++;
}else if(str.charAt(i)>= 'A' && str.charAt(i)<= 'Z'){
c2++;
}else if(str.charAt(i)>= 0 && str.charAt(i)<= 9){
c3++;
}else if(str.charAt(i) == ' '){
c4++;
}
}
System.out.println(c1+' '+ c2+' '+ c3+' '+c4);
}
}
- 가볍게 틀림
-> 문법 지식의 한계 이슈로 어디를 수정해야할 지 감이 안 잡힌다.
2. 코드 2차
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String str = sc.nextLine();
int c1 = 0, c2 = 0, c3 = 0, c4 = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch >= 'a' && ch <= 'z') {
c1++;
} else if (ch >= 'A' && ch <= 'Z') {
c2++;
} else if (ch >= '0' && ch <= '9') {
c3++;
} else if (ch == ' ') {
c4++;
}
}
System.out.println(c1 + " " + c2 + " " + c3 + " " + c4);
}
sc.close();
}
}
**수정
1) 우선 여러 줄을 입력받아야 하므로 while문으로 수정
- hasNextLine()으로 여러 줄을 받아옴
2) str.charAt(i)으로 받아온 것을 char ch로 치환해서 사용
3) 공백문자의 ASCII 값은 32이므로 c1+' ' 는 숫자로 계산됨. 그러므로 " "로 수정해야함.
!!! 맨날 잊음
4) charAt()은 char 타입이므로 0과 9는 문자열 '0', '9'로 비교해야한다.
**회고
1) 일단 접근 방법이 맞은 적은 처음임. - 굉장히 뿌듯함
2) 여러 줄을 받아올 때 hasNextLine()으로 받아오는 것을 몰랐음 - 학습 필요
3) 항상 헷갈리는 숫자를 어떻게 받아오느냐 .. - 문자열인지 생각하기
4) 어제 스터디에서 charAt()을 배우고 나니 어떻게 사용해야할 지 알겠음
5) 단순히 공백을 출력할 때 ' ' 를 사용하는줄 알았는데, 이 부분도 새로 배움
** 내일 공부할 것
1) 자바 문법에 대한 학습
2) 인텔리제이 txt 받아오는 것 설정
3) 숫자, 문자열 구분하는 것 학습
'코테 - 자바' 카테고리의 다른 글
| 99클럽 코테 스터디 6일차 TIL + 수열( (1) | 2025.04.07 |
|---|---|
| 99클럽 코테 스터디 5일차 TIL + 스택/큐(2) (0) | 2025.04.04 |
| 99클럽 코테 스터디 4일차 TIL + 스택/큐 (0) | 2025.04.03 |
| 99클럽 코테 스터디 3일차 TIL + 문자열 (0) | 2025.04.02 |
| 99클럽 코테 스터디 1일차 TIL + 팰린드롬 (7) | 2025.03.31 |