목차
#1 접미사인지 확인하기
문제 설명
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string과 is_suffix가 주어질 때, is_suffix가 my_string의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- 1 ≤ is_suffix의 길이 ≤ 100
- my_string과 is_suffix는 영소문자로만 이루어져 있습니다.
입출력 예
my_string | is_suffix | result |
"banana" | "ana" | 1 |
"banana" | "nan" | 0 |
"banana" | "wxyz" | 0 |
"banana" | "abanana" | 0 |
입출력 예 설명
#2 코드 및 알고리즘
class Solution {
public int solution(String my_string, String is_suffix) {
return my_string.substring(is_suffix.length() > my_string.length() ? my_string.length() : my_string.length() - is_suffix.length()).contains(is_suffix) ? 1 : 0;
}
}
풀이:
- 조금 길게 되었지만 알고리즘은 진짜 간단하다.
- is_suffix와 my_string의 길이를 비교하여 is_suffix가 더 길다면 my_string의 길이를 반환하여
my_string.substring(my_string) 만큼 추출하여 이 추출한 문자열 내에서 contains(is_suffix)를 이용하여
포함되어 있다면 1을 포함되어 있지 않다면 0을 반환한다. - is_suffix와 my_string의 길이를 비교하여 my_string이 더 길다면 my_string.length() - is_suffix.length()의 길이를 반환하여
my_string.substring(my_string.length() - is_suffix.length())만큼 추출하여 이 추출한 문자열 내에서 contains(is_suffix)를 이용하여 포함되어 있다면 1을 포함되어 있지 않다면 0을 반환한다. - 즉, 처음 조건에서 is_suffix의 길이가 더 길다면 결과는 무조건 0이며 주어진 is_suffix가 포함되어있지 않다.
ex) my_string = "banana", is_suffix = "bananana"; 라면 is_suffix 문자열 뒤에는 na가 더 붙어있어 my_string에는 is_suffix를 포함하지 않기 때문이다. - 만약 my_string의 길이가 더 길다면 my_string.length() - is_suffix.length()만큼 반환하는데 그 이유는 문자열에서 추출할 때
banana의 길이가 6이며, ana의 길이가 3이라면 3이 반환이되며 정상적으로 맨 뒤에 3개의 문자만 추출되어 포함되어있는지 확인한다. 왜 이렇게 하냐면 맨 뒤에서부터 검사에 필요한 문자열만 추출하여 검사할려고 알고리즘을 정하였기 때문이다.
예를 들어 apple에 pple가 접미사인지 확인하려면 인덱스 (5-4)부터 추출하여 비교하면 된다.
banana에 ana가 접미사인지 확인하려면 인덱스(6-3)부터 추출하여 비교하면 된다.
알고리즘 예제.
public class Main {
public static void main(String[] args) {
String my_string = "banana", is_suffix = "ana";
System.out.println(my_string.substring(is_suffix.length() > my_string.length()
? my_string.length() : my_string.length() - is_suffix.length()).contains(is_suffix) ? 1 : 0);
}
}
-------------------------------------------------------------
실행 결과 : 1
public class Main {
public static void main(String[] args) {
String my_string = "banana", is_suffix = "nan";
System.out.println(my_string.substring(is_suffix.length() > my_string.length()
? my_string.length() : my_string.length() - is_suffix.length()).contains(is_suffix) ? 1 : 0);
}
}
-------------------------------------------------------------
실행 결과 : 0
728x90
'JAVA > 프로그래머스 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스, LV.0] 문자열 뒤집기 (0) | 2023.06.28 |
---|---|
[프로그래머스, LV.0] 접두사인지 확인하기 (0) | 2023.06.28 |
[프로그래머스, LV.0] 접미사 배열 (0) | 2023.06.23 |
[프로그래머스, LV.0] 문자열 여러 번 뒤집기 (0) | 2023.06.22 |
[프로그래머스, LV.0] 9로 나눈 나머지 (0) | 2023.06.22 |