문제 이해
- 두 문자열의 편집 횟수가 1회 이내인지 확인하라
해결 전략
- 두 문자열의 길이가 같다면, 문자열을 순회하면서 다른 문자가 하나 이하인지 확인한다
- 두 문자열의 길이가 다르다면, 길이가 짧은 문자열을 기준으로 순회하면서
두 문자열이 다르다면, 해당 문자를 긴 문자열에서 제거해준다.
그 이후 두 문자열이 같은지 확인한다.
구현
import java.util.*;
public class Main {
public boolean solution(String s1, String s2){
int len1 = s1.length();
int len2 = s2.length();
if(len1 == len2){
int diffCnt = 0;
for(int i=0; i<s1.length(); i++){
if(s1.charAt(i) != s2.charAt(i)){
diffCnt += 1;
}
}
if(diffCnt >= 2){
return false;
}else{
return true;
}
}else{
int diffPos = 0;
int minLen = Math.min(len1, len2);
for(int i=0; i<minLen; i++){
if(s1.charAt(i) != s2.charAt(i)){
diffPos = i;
break;
}
}
if(minLen == len1){
s2 = s2.substring(0, diffPos) + s2.substring(diffPos+1);
}else if(minLen == len2){
s1 = s1.substring(0, diffPos) + s1.substring(diffPos+1);
}
if(s1.equals(s2)){
return true;
}else{
return false;
}
}
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str1=kb.next();
String str2=kb.next();
System.out.println(T.solution(str1, str2));
}
}
피드백
- 케이스를 잘 구분해야 한다.
- 문자열에서 문자를 제거하는 방법에 대해 잘 알아야 한다.
레퍼런스
'PS' 카테고리의 다른 글
자바(Java) 알고리즘 문제 풀이 - 미로의 최단 거리 통로(BFS) (1) | 2022.04.13 |
---|---|
자바(Java) 알고리즘 문제 풀이 - 미로탐색(DFS) (0) | 2022.04.13 |
코딩 인터뷰 완전 분석 1.4 회문 순열 (3) | 2022.04.11 |
코딩 인터뷰 완전 분석 1.3 URL화 (0) | 2022.04.11 |
코딩 인터뷰 완전 분석 1.2 순열 확인 (1) | 2022.04.11 |