문제
한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요. 대소문자를 구분하지 않습니다. 문자열의 길이는 100을 넘지 않습니다.
▣ 입력설명
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다. 문자열은 영어 알파벳으로만 구성되어 있습니다.
▣ 출력설명
첫 줄에 해당 문자의 개수를 출력한다.
▣ 입력예제 1
Computercooler
c
▣ 출력예제 1
2
풀이
자바의 Scanner에는 char형으로 저장할 수 있는 함수가 없다.
그래서 next() 함수를 사용해 String으로 받은 다음, charAt(int index) 함수로 문자열 중에서 문자를 가져오면 된다.
char c = in.next().charAt(0);
대소문자 상관없이 문자의 개수를 카운트하므로, 입력받은 문자열과 문자를 모두 대문자 또는 소문자로 통일한 후 체크하면 된다.
String의 경우 toUpperCase() 함수를,
char의 경우 Character.toUpperCase() 함수를 사용해서 대문자로 바꾼다.
강사님은 for each 문을 사용해서 푸셨는데, for each문에는 String이 들어갈 수 없다는 점을 주의해야한다.
그래서 String을 toCharArray() 함수를 사용해 char 배열로 바꿔서 돌려야한다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//문자열에 특정문자가 몇개 존재하는지
String s = in.next();
char c = in.next().charAt(0);
int answer = 0;
//다 대문자로 바꿔버리기
s = s.toUpperCase();
c = Character.toUpperCase(c);
//향상된 for문
for(char x : s.toCharArray()) { //String -> Char 배열로 복사
if(x == c) answer++;
}
System.out.print(answer);
}
}
'PS(Java) > 인프런 강의 문제' 카테고리의 다른 글
[PS] 인프런 강의 - 문자열 3. 문장 속 단어(indexOf(), substring()) (0) | 2022.10.10 |
---|---|
[PS] 인프런 강의 - 문자열 2. 대소문자 변환 (0) | 2022.10.10 |
[PS] 인프런 강의 - DFS 12. 피자 배달 거리(삼성 SW역량평가 기출문제) (0) | 2022.10.08 |
[PS] 인프런 강의 - BFS 3. 섬나라 아일랜드 (0) | 2022.10.08 |
[PS] 인프런 강의 - DFS 11. 섬나라 아일랜드 (0) | 2022.10.08 |