알고리즘(Algorithm)

[Algorithm] 문자열 찾기

XDXDX 2023. 3. 6. 17:20

1. 문제

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

 

대소문자를 구분하지 않는다.

문자열의 길이는 100을 넘지 않는다.

 

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

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

2. 예시

Computercooler
c
2

 

첫 줄에 Computercooler을 입력하고 알파벳 c를 입력하면 c 몇 개 리턴되는가? 단, 대소문자 구분 X

3. 코드

 

  1. 문제에서 문자열과 특정문자를 사용해 문자열 개수를 찾는 문제이다.
  2. 조건은 대소문자 구별 하지 않으므로 특정문자와 문자열을 대문자 혹은 소문자로 바꾼 후 개수를 찾아야 한다.
    • toUpperCase() / toLowerCase() 사용
  3. 특정문자의 길이만큼 for문을 사용하여 문자열과 같은 게 있는지 찾는다.
    • charAt(i)을 사용하면 문자열의 i번째 문자 확인가능.
    • if문 사용하여 만약 특정문자과 문자열의 i번째 문자와 같다면 answer을 ++ 해준다.
  4. 개수를 구하는 문제이므로 answer을 리턴해주면 끝.

4. 마무리

위 코드처럼 작성해도 실행하는데 문제는 없지만 좀 더 간결한 코드를 사용해 보자.

 

 

 

  1. str을 toCharArray() 사용해 문자 하나하나를 배열로 나누고, 변수 char a를 추가하여 str의 길이만큼 for문을 돌린다.(향상된 for문 사용) 
    • toCharArray() : 문자열을 쪼개 배열 순서대로 값을 넣는다.
    • String str = "Apple";
      char [] array = str.toCharArray();
  2. a와 특정문자인 t가 같다면 answer를 ++ 해준 후 리턴한다. 

 

[향상된 for문]

  • 1. 배열이 있는 경우 사용가능하며, 배열의 길이만큼 for문이 돌아간다.
  • 2. 인덱스 사용을 하지 않는 경우라면, 간결한 코드 작성 가능
  • 3. 인덱스 사용은 할 수가 없기 때문에 배열의 길이만큼 무조건 for문이 돌아간다.
  • 4. 특정 인덱스 사용 불가 순차적으로 결과 값이 리턴된다.
for(타입 변수 : 배열){
	반복하고자하는 명령문;
}

 

 

이 글이 내 첫 알고리즘의 시작이다.

어려워죽겠다.