본문 바로가기
자바 알고리즘

10. 가장 짧은 문자거리

by watergrace2u 2022. 7. 5.
반응형
SMALL

# 풀이

import java.util.Scanner;
       
public class Main {
    
    public int[] solution(String s, char t){
        int[] answer = new int[s.length()];
        
        // 왼쪽에 있는 t로부터의 거리 (처음부터 쭉)
        // 일단 p를 최대한 큰수로 초기화
        int p = 1000;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)==t) {
                p = 0;
                answer[i] = p;
            }else {
                p++;
                answer[i] = p;               
            }
        }
        
        // 오른쪽에 있는 t로부터의 거리
        // 거꾸로 기존의 값과 비교해서 작은 값 넣기
        p=1000;
        for(int i=s.length()-1;i>=0;i--){
            if(s.charAt(i)==t) p=0;
            else {
                p++;
                if(p<answer[i]){
                    answer[i] = p;
                }
            }
        }
        return answer;
    }
    
	public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    Main T = new Main();
    String s = in.next();
    char t = in.next().charAt(0);
    for(int x: T.solution(s,t)){
      System.out.print(x + " ");
    }
    return ;
  }
}



반응형
LIST

'자바 알고리즘' 카테고리의 다른 글

12. 보이는 학생  (0) 2022.08.02
11. 문자열 압축  (0) 2022.07.06
09. 숫자만 추출  (0) 2022.04.11
08. 팰린드롬 (replaceAll 정규식 이용)  (0) 2022.04.11
07. 회문 문자열  (0) 2022.04.08

댓글