Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

main

[String-10] 가장 짧은 문자거리 본문

Algorithm

[String-10] 가장 짧은 문자거리

1984 2022. 11. 18. 22:45

* 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

* 앞 -> 뒤 / 뒤 -> 앞  방향으로 e 거리 구해서 min 값 을 입력해준다.

import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer stk = new StringTokenizer(br.readLine(), " ");

		String str = stk.nextToken();
		char c = stk.nextToken().charAt(0);

		int[] arr = new int[str.length()];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = -1;
		}
		
		// 앞 -> 뒤
		int dist = str.length();
		for (int i = 0; i < str.toCharArray().length; i++) {
			if (c == str.toCharArray()[i]) {
				arr[i] = 0;
				dist = 0;
				dist++;
			} else if (dist != -1) {
				arr[i] = dist;
				dist++;
			}
		}
		
		// 뒤 -> 앞
		dist = str.length();
		for (int i = arr.length -1; i >= 0 ; i--) {
			if (c == str.toCharArray()[i]) {
				dist = 0;
				dist++;
			} else if (dist != -1) {
				arr[i] = Math.min(arr[i], dist);
				dist++;
			}
		}
		
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}

}
Comments