가장 짧은 문자거리

Seung jun Cha·2022년 12월 15일
0
  • 문자열과 문자를 입력받고 문자열의 모든 문자들과 입력받은 문자와의 가장 짧은 거리를 측정한다.
    ex) aabccdecf , c => 3 2 1 0 0 1 1 0 1
  public int[] solution(String s, char t){
        int[] arr = new int[s.length()];
        int p = 1000;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == t){
                p = 0;
                arr[i] = p;
            }else {
                p++;
                arr[i] = p;
            }
        }
        for (int i = arr.length -1; i >= 0; i--) {
            p = 1000;
            if (arr[i] == t){
                p = 0;
            }else{
                arr[i] = Math.min(arr[i], p);
                // 기존에 arr[i]에 들어가있던 값과 비교
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        char c = sc.next().charAt(0);

        for (int x : T.solution(str, c)) {
            System.out.println(x);
        }
    }
  1. int배열을 사용하며, 자신의 왼쪽에 있는 문자와의 거리를 측정한다.

  2. 첫 문자가 주어진 문자가 아니라면 숫자는 아주 큰 숫자로 초기화한다.

  3. 주어진 문자가 아니라면 숫자 1을 증가시키고 맞다면 값을 0으로 초기화 한다.

  4. 왼쪽문자와 비교를 반복한다.

  5. 비교가 끝나면 반대로 배열의 끝에서부터 오른쪽 문자와 비교한다.

  6. 왼쪽부터 비교했을 때 배열에 들어가있는 값과 오른쪽부터 비교했을 때 들어가는 값 중 작은 값을 넣는다.

0개의 댓글