728x90
반응형
안녕하세요
이번 포스팅은 Cos Pro 1급 3차 기출 중 4번 문제인 중복 문자열 이어 붙이기를 풀어보겠습니다.
□ 문제설명
두 문자열 s1과 s2를 붙여서 새 문자열을 만들려 합니다. 이때, 한 문자열의 끝과 다른 문자열의 시작이 겹친다면, 겹치는 부분은 한 번만 적습니다.
예를 들어 s1 = "ababc", s2 = "abcdab"일 때, 아래와 같이 s1 뒤에 s2를 붙이면 새 문자열의 길이는 9입니다.
그러나 s2 뒤에 s1을 붙이면 새 문자열의 길이는 8로, 더 짧게 만들 수 있습니다.
두 문자열 s1과 s2가 매개변수로 주어질 때, s1과 s2를 붙여서 만들 수 있는 문자열 중, 가장 짧은 문자열의 길이를 return 하도록 solution 함수를 완성해주세요.
□ 매개변수 설명
두 문자열 s1과 s2가 solution 함수의 매개변수로 주어집니다.
- s1과 s2의 길이는 1 이상 100 이하입니다.
- s1과 s2는 알파벳 소문자로만 이루어져 있습니다.
□ 예시
s1 | s2 | return |
"ababc" | "abcdab" | 8 |
□ 예시 설명
문제에 주어진 예시와 같습니다.
※ 문제 접근 방법
(1) 두 문자열의 길이 중 더 작은 길이의 문자열의 길이를 구합니다.
(2) s1은 문자열 끝에서부터, s2는 처음부터 i 씩 늘려가며 중첩된 부분이 많은 인덱스를 구합니다.
(3) s1에 s2의 중첩되는 부분을 제외한 나머지를 이어 붙입니다.
package duplicatedStringConcat;
public class DuplicatedStringConcat {
public static void main(String[] args) {
Main sol = new Main();
String s1 = new String("ababc");
String s2 = new String("abcdab");
int ret = sol.solution(s1, s2);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("solution 메소드의 반환 값은 " + ret + " 입니다.");
}
}
class Main {
public int solution(String s1, String s2) {
int answer = 0;
int len = Math.min(s1.length(), s2.length());
int idx = 0;
for (int i = 0; i < len; i++) {
String sub1 = s1.substring(s1.length() - i -1, s1.length() - 1);
String sub2 = s2.substring(0, i);
if(sub1.equals(sub2)) idx = i;
}
answer = s1.concat(s2.substring(idx, s2.length()-1)).length();
return answer;
}
}
728x90
반응형
'코딩테스트 > Cos Pro 1급 Java' 카테고리의 다른 글
[Cos Pro 1급 java] [4차] 문제10) 소수의 세제곱이 몇개가 있나요 - 에라스토테네스의 체 사용 (0) | 2021.03.22 |
---|---|
[Cos Pro 1급 java] [3차] 문제5) 전광판 문구 출력 (0) | 2021.03.17 |
[Cos Pro 1급 java] [3차] 문제3) 비숍으로부터 도망쳐 (0) | 2021.03.17 |
[Cos Pro 1급 java] [2차] 문제8) 규칙에 맞는 배열 구하기 (0) | 2021.03.16 |
[Cos Pro 1급 java] [2차] 문제7) 거스름돈 구하기 - 탐욕법 문제(그리디 알고리즘) (0) | 2021.03.16 |
댓글