문제 이해
- 두 문자열의 편집 횟수가 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 |