[Algorithm] 04.코딩 테스트를 위한 알고리즘 공부
문자열 내 문자 개수 구하기
import java.util.Scanner;
public class Main {
public int solution(String str, char c) {
int count = 0;
str = str.toUpperCase();
c = Character.toUpperCase(c);
char[] chars = str.toCharArray();
for (char x : chars) {
if(x == c) {
count++;
}
}
return count;
}
public static void main(String[] args) {
Main main = new Main();
Scanner sc = new Scanner(System.in);
String inputS = sc.next();
char inputC = sc.next().charAt(0);
int answer = main.solution(inputS, inputC);
System.out.println(answer);
}
}
주의할 점 : 대소문자 구분을 하지 않고 찾는다고 했는데 이부분 놓치고 toXXCase를 해주지 않았었다. + 찾아주는 문자도 Character.toxxCase 해줘야 한다.
나는 입력받은 문자열을 문자형 배열로 바꿔서 배열을 for문으로 돌리면서 비교했는데, 이렇게 바꾸지 않고 문자열을 그대로 둔 상태에서 문자열의 길이만큼 charAt()을 수행시켜서 입력받은 문자와 같은지 확인하는 방법도 있다.
import java.util.Scanner;
public class Main {
public int solution(String str, char c) {
int count = 0;
str = str.toUpperCase();
c = Character.toUpperCase(c);
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i) == c) count++;
}
return count;
}
public static void main(String[] args) {
Main main = new Main();
Scanner sc = new Scanner(System.in);
String inputS = sc.next();
char inputC = sc.next().charAt(0);
int answer = main.solution(inputS, inputC);
System.out.println(answer);
}
}
- 두 가지 방식을 비교했을 때 메모리는 똑같이 27MB를 사용했고 시간은 문자열에서 charAt으로 접근한 경우가 1ms 더 늦은 159ms였다.
