문제
입력
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
문자열은 영어 알파벳으로만 구성되어 있습니다.
출력
예시
// 아래의 2가지를 입력 받음
Computer
c
// 출력 결과
1
코드
class Main {
public static int solution(String str, char word) {
int answer = 0;
// 3. 대소문자 구별을 하지 않는다고 했으므로 전부 대문자로 바꾼다.
str = str.toUpperCase();
word = Character.toUpperCase(word);
// 4. for문을 통해 문자열 하나하나 돌면서 일치하는 문자가 있으면 answer를 증가 시킨다.,
for (int i=0 ; i<str.length(); i++){
if ( str.charAt(i) == word) {
answer++;
}
}
// 향상된 for문으로 할 수 있다. string을 향상된 for문으로 사용할 수 없기 때문에
아래 처럼 toCharArray를 통해 String을 배열로 만들어야 한다.
for ( char x : str.toCharArray() ) {
if ( x == word ) {
answer++;
}
}
// 5. 마지막으로 answer를 리턴하여 카운팅된 문자의 갯수를 리턴
return answer;
};
public static void main(String[] args) {
// 1. 스캐너 객체를 생성한다.
Scanner input = new Scanner(System.in);
// 2. 문자열과, 문자열 하나를 콘솔창으로 부터 입력 받아 solution 메서드에 전달한다.
String str = input.next();
char word = input.next().charAt(0);
System.out.println(solution(str,word));
}
}
사용한 메서드
charAt()
// charAt()은 스트링을 인덱스로 접근하게 해준다. ( 마치 배열 처럼 )
String str = "helloWorld"
// 아래 처럼 문자열 str의 0번째 인덱스 값을 가져 올 수 있다.
char c = str.charAt(0) // h
toUpperCase()
// toUpperCase()는 문자열을 대문자로 변환하여 그 값을 리턴한다.
String st = "helloWorld";
// 변환된 값을 리턴하기 때문에 따로 변수에 담지 않고 아래 처럼 바로 출력해도 결과가 나온다.
System.out.println(st.toUpperCase()); // HELLOWORLD
Character.toUpperCase()
// String이 아닌 char의 경우 Character.toUpperCase()를 사용한다.
char c = 'd';
// 마찬가지로 변환된 값을 리턴하기 때문에 따로 변수에 담지 않고 아래 처럼 바로 출력해도 결과가 나온다.
System.out.println(Character.toUpperCase(c)); // D
toCharArray()
// toCharArray()는 문자열을 배열로 바꿔 주는 역할을 한다.
String st = "helloWorld";
char[] arr = st.toCharArray();
System.out.println(arr[1]); // e출력