
Solution 1) 내 풀이
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
int idx = 0;
while((idx = myString.indexOf(pat, idx)) != -1) {
answer++;
idx++;
}
return answer;
}
}
코드 및 문제 리뷰
myString 문자열에서 pat 문자열이 몇번 등장하는지 찾는 문제이다.
위의 내 풀이는 나도 참고한 풀이인데, indexOf를 쓰는 방식이 정말 깔끔하다고 생각해 배워왔다.
while 문의 조건으로 != -1를 뒀고, 이는 indexOf의 특징을 이용한 조건이다.
indexOf로 특정 문자 또는 문자열이 포함되지 않는다면 -1을 반환하기 때문에 그때 까지 돌며 문자 또는 문장을 찾겠다는 의미이다.
myString.indexOf(pat, idx)를 해서 pat이 존재한다면 시작 위치가 idx로 들어갈 것이고, 반복문 안에서 idx가 ++ 되기 때문에 자동적으로 다시 while문을 들어갈 땐 그 다음 idx 부터 탐색을 시작한다. 그와 동시에 반복문안에 들어온다면 answer이 카운트 되어 ++ 될 것이고, idx를 모두 돌아 같은 문자 또는 문자열이 존재하지 않는다면 indexOf가 -1를 반환하며 마무리 된다.
해당 문제는 다른 풀이들이 꽤 다양한 케이스로 존재하는데, 내가 문자열 문제에 약한것 같아 한번씩 들어가 참고하고 되새겨야겠다.
(내 검색어, 참고문제, 문자열 문제)
'연습문제 > 프로그래머스, 기초 트레이닝' 카테고리의 다른 글
| [프로그래머스 기초_java] 공백으로 구분하기 2 (0) | 2023.11.02 |
|---|---|
| [프로그래머스 기초_java] ad 제거하기 (0) | 2023.11.02 |
| [프로그래머스 기초_java] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2023.11.02 |
| [프로그래머스 기초_java] 특정한 문자를 대문자로 바꾸기 (0) | 2023.11.01 |
| [프로그래머스 기초_java] A 강조하기 (0) | 2023.11.01 |