본문 바로가기

알고리즘/인프런

섹션 1. String(문자열)_1. 문자 찾기

문제

  • 한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
  • 대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.

입력

  • 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
  • 문자열은 영어 알파벳으로만 구성되어 있습니다.

출력

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

입출력 예제


강의를 들으면서 풀어보니, 기존에 내가 작업하던 것과 가장 큰 차이점이 바로 '메소드'를 사용한다는 것이었다.

앞으로는 메소드와 TDD를 이용하여 알고리즘을 풀 수 있도록 연습해보려고 한다.

 

풀이 과정은 다음과 같은 순서를 가진다.

1. 입력받을 문자열과 문자 선언

2. 작업이 이루어질 메소드 선언

3. 메소드 구현

4. 출력

 

가장 먼저 입력받을 문자열과 문자를 선언한다.

Scanner를 사용한다. 이 때, 문자는 charAt(0)을 통해 문자열에서 0번째의 문자 1개를 가져오도록 한다.

 

그 후에 실제 작업이 이루어질 메소드를 하나 생성한다.

생성한 메소드를 실행할 수 있도록 main에 객체를 생성한다.

(이 때, 생성한 메소드가 static 이 붙어있다면 객체 생성을 해주지 않아도 된다.)

 

이제 메소드를 구현해보자.

일단 갯수를 찾아 결과값을 리턴할 변수 result를 선언하고, 0으로 초기화해준다.

문자열과 문자변수인 str, c 에 각각 toUpperCase() 를 사용하여 전부 대문자로 바꾸어준다.

(대소문자 구분을 없애기 위해서 사용한다.)

 

다음으로는 향상된 for문을 사용하여 입력받은 문자열 중에 원하는 문자가 있으면  result 에 1씩 더해주도록 한다.

이 때, char x : ' ' 에서 ' ' 부분에는  ArrayList, List 등과 같은 배열이 들어가야 한다.

때문에 toCharArray()를 사용하여 str에 입력된 문자열을 문자 하나씩 분리해서 문자 배열을 생성하도록 한다.

 

결과적으로 str에 입력된 문자와 찾고자 하는 문자를 하나씩 비교하여 일치하는 문자가 있으면  result에 1씩 더해주는 메소드가 완성되었다.


해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.