코딩테스트/기타

[문자열] 문자 찾기 .java

머밍 2024. 8. 28. 16:39

문제

설명한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.

 

조건

대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다. 문자열은 영어 알파벳으로만 구성되어 있습니다.

 

  • 입력: 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
  • 출력: 첫 줄에 해당 문자의 개수를 출력한다.

예시 입력 1 

Computercooler
c

예시 출력 1

2

 

 

첫번째 풀이

입력받을 때 둘 다 문자열로 입력받았으며 for문으로 구했다.

갑자기 char형 문자를 대소문자로 변경하는 메서드가 생각나지 않아서 이렇게 구현하였다...

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String str = sc.nextLine();
        String find = sc.next();

        str = str.toLowerCase();
        find = find.toLowerCase();
        
        int answer = 0;
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==find.charAt(0)){
                answer++;
            }
        }
        System.out.println(answer);
    }
}

 

 

두번째 풀이

char형으로 받고 for문도 효율적으로 재구성했다.

검색해서 char형의 메서드를 알아와서 다시 풀었다

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        //입력 받기
        String str = sc.nextLine();
        char find = sc.next().charAt(0);

        //소문자로 변환
        str = str.toLowerCase();
        find = Character.toLowerCase(find);

        int answer = 0;

        for(char c : str.toCharArray()){
            if(c == find){//일치하면 횟수 증가
                answer++;
            }
        }

        System.out.println(answer);
    }
}

 

 

다른 풀이

 

solution 함수를 구현하여 푸는 방식인데, 프로그래머스 풀이할 때 쓰던 형식과 유사하다

하지만 전체 코드를 구현한다는 점에서 백준 풀이 방식과 프로그래머스 풀이가 섞인 풀이 방식이다

 

import java.util.Scanner;

class Main {
    public int solution(String str, char t){//non-static
        int answer = 0;
        //대문자로 변환
        str = str.toUpperCase();
        t = Character.toUpperCase(t);

        /*for(int i = 0; i < str.length(); i++){
            if(str.charAt(i) == t){//string 변수를 인덱스로 접근
                answer++;
            }
        }*/
        for(char x : str.toCharArray()){//string 변수인 str를 문자 배열로 생성
            if(x == t) answer++;
        }
        return answer;
    }
    public static void main(String[] args) {
        Main T  = new Main(); //클래스 객체 생성 (static 아니라서)
        Scanner kb  = new Scanner(System.in);

        String str = kb.next();//문자열 하나 읽기
        char c = kb.next().charAt(0); //문자 하나 읽기

        System.out.println(T.solution(str, c));
    }
}