프로그래머스 코딩테스트(특정 문자열로 끝나는 가장 긴 부분 문자열 찾기, 세로 읽기, 날짜 비교하기)
<특정 문자열로 끝나는 가장 긴 부분 문자열 찾기>
문제 설명
문자열 myString과 pat가 주어집니다. myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
풀이
class Solution {
public String solution(String myString, String pat) {
String answer = "";
int n = 0;
for(int i=myString.length()-1;i>=0;i--){
if(myString.substring(i).contains(pat)){
n = i;
break;
}
}
return myString.substring(0,n+pat.length());
}
}
다른 사람 풀이
class Solution {
public String solution(String myString, String pat) {
String answer = "";
int idx = myString.lastIndexOf(pat);
answer = myString.substring(0, idx) + pat;
return answer;
}
}
<세로 읽기>
문제 설명
문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.
풀이
class Solution {
public String solution(String my_string, int m, int c) {
String answer = "";
for(int i=c-1;i<my_string.length();i=i+m){
answer+=my_string.charAt(i);
}
return answer;
}
}
<날짜 비교하기>
문제 설명
정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.
만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.
풀이
class Solution {
public int solution(int[] date1, int[] date2) {
for(int i=0;i<3;i++){
if(date1[i]<date2[i]){
return 1;
} else if(date1[i]>date2[i]){
return 0;
}
}
return 0;
}
}
다른 사람 풀이
import java.time.LocalDate;
class Solution {
public int solution(int[] date1, int[] date2) {
LocalDate dateA = LocalDate.of(date1[0], date1[1], date1[2]);
LocalDate dateB = LocalDate.of(date2[0], date2[1], date2[2]);
if (dateA.isBefore(dateB)) {
return 1;
} else {
return 0;
}
}
}