Nellie's Blog

[자바 알고리즘 문제풀이 입문][섹션1. String] 1. 문자찾기 본문

Back-end/Algorithm

[자바 알고리즘 문제풀이 입문][섹션1. String] 1. 문자찾기

Nellie Kim 2022. 12. 15. 02:22
728x90

1. 문자 찾기

 

설명

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

대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.

 

입력

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

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

 

출력

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

 

예시 입력 1 

Computercooler
c

예시 출력 1

2

 

 

내 풀이

package org.example;

import java.util.Scanner;

public class Main {
    public int solution(String str, char t) {
        int answer = 0;
        str = str.toLowerCase();
        t = Character.toLowerCase(t);  //

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == t) {  // 이걸 먼저 생각하기!
                answer++;
            }
        }
        return answer;
    }

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

 

선생님 풀이

import java.util.*;
class Main{	
	public int solution(String str, char t){
		int answer=0;
		str=str.toUpperCase();
		t=Character.toUpperCase(t);
        
		for(char x : str.toCharArray()){  // str을 '문자배열'로 만들어준다!!!
			if(x==t) answer++;
		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		char c=kb.next().charAt(0);
		System.out.print(T.solution(str, c));
	}
}

 

 

 

배운점

 

- 무조건 배열이나 리스트부터 만들려고 하지말자

- 그냥 charAt으로 바로 비교해서 answer을 하나씩 증가시키기

- 향상된 for문을 사용할 때에는 배열 or 리스트를 참조해서 가져와야 하기 때문에 , 위의 코드의 경우 str을 그냥 쓸 수는 없다. 그래서 str.toCharArray() 를 써주어서 str을 문자배열로 바꿔주었다.

 

 

 

 

 

 

출처 : [인프런] 김태원의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비