본문 바로가기
4.2 프로그래머스 & 코테문제/Java 풀이

[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/ 접두사인지 확인하기

by Dohi._. 2024. 6. 15.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/181906

 

문제설명

어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다.
예를 들어, "banana"의 모든 접두사는 "b", "ba", "ban", "bana", "banan", "banana"입니다.
문자열 my_string과 is_prefix가 주어질 때,
is_prefix가 my_string의 접두사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.

제한사항

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

풀이

여러 방법이 있겠지만 

1. 문자열의 앞부분부터 확인한다 (charAt를 사용해도 되겠네유)

2. my_string을 is_prefix만큼 잘라내서 동일한지 확인한다 (만약 길이가 더길다면 0으로 반환)

3. 그냥 메소드를 사용한다.

 

1번은 자주 사용하기도 했으니까 2번과 3번으로 한번 풀어보겠습니다

 

2번  my_string을 is_prefix만큼 잘라내서 동일한지 확인한다

class Solution {
    public int solution(String my_string, String is_prefix) {
        int answer = 0;
        int len_prefix = is_prefix.length();
        if(len_prefix<=my_string.length()){ //길이가 넘어갈시 실행안함 그럼 0으로 그냥 출력됨
            answer = is_prefix.equals( my_string.substring(0, len_prefix) ) ? 1 : 0;     
        }
        return answer;
    }
}

일단 if문에서는 길이가 더 길경우에 if문을 실행하지않아  answer를 0으로 초기화 된상황이기때문에 0으로 반환이됩니다.

그후 if문을 실행을하면  substring을 이용하여 문자열을 잘라냅니다 그후 is_prefix와 동일한지 확인하고 
동일할경우 삼항연산자로 인해 1을 answer에 저장하고 아닐경우엔 0을 answer에 저장합니다

 

 

3번 메소드 사용 

class Solution {
    public int solution(String my_string, String is_prefix) {
        return my_string.startsWith(is_prefix) ? 1: 0;
    }
}

startsWith()는 대상 문자열이 특정 문자열로 시작하는지 체크하고 boolean값으로 반환하는 메소드이다

 

 

 

들어간 메소드 정리

boolean String1.startsWith(String2) : 문자열1이 문자열2로 시작하는지 체크한다

boolean String1.equals(String2): 문자열1이 문자열2와 같은지 체크한다.

String     String1.substring(int StartIndex, int EndIndex) : 문자열을 StartIndex부터 endIndex앞까지 자른다 endIndex가 없을경우 끝까지 반환한다. ex) "01234".substring(1, 4) → 123

728x90

댓글