[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였다.




© 2021.1. by jean202

Powered by jean202