알고리즘/JAVA

[JAVA] 10. 가장 짧은 문자거리

수진보배 2021. 4. 15. 18:42
728x90

설명

 

한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.

 

풀이

 

import java.util.*;

public class Main  {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        String input = in.next();
        char input2 = in.next().charAt(0);
        int[] answer = new int[input.length()];

        char[] arr = input.toCharArray();

        int max = 1000;

		//왼쪽에서부터 INPUT2와의 거리
        for (int i=0; i<arr.length; i++) {
            if(arr[i] == input2){
                max = 0;
                answer[i] = 0;
            }else{
                max++;
                answer[i] = max;
            }

        }

		//오른쪽에서부터 INPUT2와의 거리
        max = 1000;
        for (int i=arr.length-1; i>=0; i--) {
            if(arr[i] == input2){
                max = 0;
            }else{
                max++;
                // 더 작은 값 넣기
                answer[i] = Math.min(answer[i], max);
            }
        }

        for (int i : answer) {
            System.out.print(i+ " ");
        }

    }
}
728x90