728x90
이해하기
너무 쉬운 문제지만 여러가지 방법으로 풀 수 있을 것 같은데 싶어서 정리해보았다.
처음에는 for문에서 substring 인덱스를 하나씩 증가시키면서 잘라온 후, 끝까지 돌아서 마지막 temp를 반환하도록 풀이하였다.
class Solution {
public String solution(String myString, String pat) {
String answer = "";
for (int i = 0; i < myString.length() + 1; i++) {
String temp = myString.substring(0, i);
if (temp.endsWith(pat)) {
answer = temp;
}
}
return answer;
}
}
예를 들어 "AbCdEFG"라면 "A", "Ab", "AbC", "AbCd", "AbCdE", "AbCdEF", "AbCdEFG" 순으로 temp에 저장한 후, pat으로 끝나는지 확인한 후, 조건에 맞는다면 answer를 temp로 바꿔준다.
이렇게만 풀이해도 통과됐지만, 조금 더 좋은 방법이 있을 것 같다고 생각했다.
두 번째 풀이 방법은 다음과 같다.
- substring을 증가가 아닌 감소하도록 실행한다.
- "AbCdEFG", "AbCdEF", "AbCdE", "AbCd", "AbC", "Ab", "A" 순서
- pat을 끝나는 문자열이 있다면 바로 return한다.
- 가장 긴 문자열을 찾으면 되기 때문
문제풀이
class Solution {
public String solution(String myString, String pat) {
for (int i = myString.length(); i >= 0; i--) {
String temp = myString.substring(0, i);
if (temp.endsWith(pat)) {
return temp;
}
}
return "";
}
}
제출 결과 시간이 덜 걸리는 것을 확인했다.
항상 문제 해석을 잘 하는 것이 어려운 것 같다.
"가장 긴"이니 뒤에서부터 substring하면 됐던 문제!
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.0] 프로그래머스 - 무작위로 K개의 수 뽑기 : Java (0) | 2024.04.30 |
---|---|
[Lv.0] 프로그래머스 - 세 개의 구분자 : Java (0) | 2024.04.30 |
[Lv.1] 프로그래머스 - 시저 암호 : Java (0) | 2024.04.19 |
[Lv.0] 프로그래머스 - 접미사인지 확인하기 (1) | 2024.04.19 |
[Lv.0] 프로그래머스 - 배열 만들기 5 : Java (0) | 2024.04.19 |