[프로그래머스/Java] Lv.0 부분 문자열인지 확인하기

febCho·2024년 3월 19일
0

코딩테스트

목록 보기
110/253
post-thumbnail

문제

부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열이지만, "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다.

문자열 my_string과 target이 매개변수로 주어질 때, target이 문자열 my_string의 부분 문자열이라면 1을, 아니라면 0을 return 하는 solution 함수를 작성해 주세요.

- 제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • my_string은 영소문자로만 이루어져 있습니다.
  • 1 ≤ target의 길이 ≤ 100
  • target은 영소문자로만 이루어져 있습니다.

풀이

항상 i < j 관계를 유지하기 위해 int j = i로 초기화했다. 그리고 substring()에서 인덱스 j 값 전까지 추출된다는 점을 고려하여 두 번째 for문에서는 순회 범위를 j<my_string.length()+1로 잡아야 한다.

그렇게 String my_string이 모든 부분 문자열을 담은 List 객체를 루프로 돌며 equals()String target과 일치한지 체크하고, 같다면 answer를 1로 변환하고 break;로 반복문을 빠져나온다.

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int solution(String my_string, String target) {
        int answer = 0;
        
        List<String> list = new ArrayList<>();
        for(int i=0;i<my_string.length();i++){
            for(int j=i;j<my_string.length()+1;j++){
                list.add(my_string.substring(i, j));
            }
        }
        
        for(int i=0;i<list.size();i++){
            if(list.get(i).equals(target)){
                answer = 1;
                break;
            }
        }
        
        return answer;
    }
}

결과

profile
Done is better than perfect.

0개의 댓글