알고리즘(Algorithm)
[Algorithm] 문자열 찾기
XDXDX
2023. 3. 6. 17:20
1. 문제
한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성.
대소문자를 구분하지 않는다.
문자열의 길이는 100을 넘지 않는다.
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
문자열은 영어 알파벳으로만 구성되어 있다.
2. 예시
Computercooler
c
2
첫 줄에 Computercooler을 입력하고 알파벳 c를 입력하면 c 몇 개 리턴되는가? 단, 대소문자 구분 X
3. 코드
- 문제에서 문자열과 특정문자를 사용해 문자열 개수를 찾는 문제이다.
- 조건은 대소문자 구별 하지 않으므로 특정문자와 문자열을 대문자 혹은 소문자로 바꾼 후 개수를 찾아야 한다.
- toUpperCase() / toLowerCase() 사용
- 특정문자의 길이만큼 for문을 사용하여 문자열과 같은 게 있는지 찾는다.
- charAt(i)을 사용하면 문자열의 i번째 문자 확인가능.
- if문 사용하여 만약 특정문자과 문자열의 i번째 문자와 같다면 answer을 ++ 해준다.
- 개수를 구하는 문제이므로 answer을 리턴해주면 끝.
4. 마무리
위 코드처럼 작성해도 실행하는데 문제는 없지만 좀 더 간결한 코드를 사용해 보자.
- str을 toCharArray() 사용해 문자 하나하나를 배열로 나누고, 변수 char a를 추가하여 str의 길이만큼 for문을 돌린다.(향상된 for문 사용)
- toCharArray() : 문자열을 쪼개 배열 순서대로 값을 넣는다.
- String str = "Apple";
char [] array = str.toCharArray();
- a와 특정문자인 t가 같다면 answer를 ++ 해준 후 리턴한다.
[향상된 for문]
- 1. 배열이 있는 경우 사용가능하며, 배열의 길이만큼 for문이 돌아간다.
- 2. 인덱스 사용을 하지 않는 경우라면, 간결한 코드 작성 가능
- 3. 인덱스 사용은 할 수가 없기 때문에 배열의 길이만큼 무조건 for문이 돌아간다.
- 4. 특정 인덱스 사용 불가 순차적으로 결과 값이 리턴된다.
for(타입 변수 : 배열){
반복하고자하는 명령문;
}
이 글이 내 첫 알고리즘의 시작이다.
어려워죽겠다.