본문으로 바로가기

[JAVA]String 01.문자찾기

category 코딩테스트/basic 2022. 5. 15. 00:54

 

문제 설명

한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지

알아내는 프로그램을 작성하세요.

 

입력

첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.

문자열은 영어 알파벳으로만 구성되어 있습니다.

 

출력

첫 줄에 해당 문자의 개수를 출력한다.

 

 

* 나의 접근 방법

: 1) ch가 대문자일때 toUpperCase()를 이용하여 sum1에 담고, 소문자일때 toLowerCase()이용하여 sum2에 담는다.

2) sum1, sum2 둘 중하나는 무조건 0이 나오므로 둘중 큰 숫자가 정답.

 

import java.util.Scanner;
class Main {
	
	public int solution(String str, char ch) {
        //프로그래머스 방식 
		int answer = 0;
		str = str.toUpperCase(); //대문자로 변환
		int sum1 = 0, sum2 = 0;
		
		for(int i = 0; i < str.length(); i++) {
			if(str.charAt(i) == ch) {
				sum1++;
			}
		}
		str = str.toLowerCase(); //소문자 변환
		for(int i = 0; i < str.length(); i++) {
			if(str.charAt(i) ==  ch) {
				sum2++;
			}
		}
		
		answer = Math.max(sum1, sum2);
		
		return answer;

	}

	public static void main(String[] args){
        //백준방식
		Main t = new Main();
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		char ch = sc.next().charAt(0);
		System.out.println(t.solution(str, ch));
	}
}
 

+ 보완.

1) ch도 대문자로 바꿔주기 ch = Character.toUpperCase(ch);

2) 향상된 for문

for (자료형 변수명 : 배열) { }

toCharArray : 문자열을 char 배열로 변환

import java.util.Scanner;
class Main {
	
	public int solution(String str, char ch) {

		int answer = 0;
		str = str.toUpperCase(); //문자열 대문자로 변환
		ch = Character.toUpperCase(ch); //문자 대문자로 변환
		
		for(char x : str.toCharArray()) // 향상된 for문
			
			if( x == ch) answer++;
		
		return answer;

	}

	public static void main(String[] args){
		Main t = new Main();
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		char ch = sc.next().charAt(0);
		System.out.println(t.solution(str, ch));
	}
}
 

 

 

'코딩테스트 > basic' 카테고리의 다른 글

[JAVA]String06.중복 문자 제거  (0) 2022.05.17
[JAVA]String05.특정문자 뒤집기  (0) 2022.05.15
[ JAVA]String04.단어 뒤집기  (0) 2022.05.15
[JAVA]String03.문장 속 단어  (0) 2022.05.15
[ JAVA]String02.대소문자 변환  (0) 2022.05.15