알고리즘/문자열, 정렬

[알고리즘] 가장 짧은 문자거리 with Java, 거리 구하는 것에 대한 생각

VIPeveloper 2022. 2. 27. 15:05
728x90
반응형

오늘은 주말이니까 string파트는 다 끝낸다는 마인드로 강의를 수강해야겠다.

오늘 배운 것

1. 문자 간 거리를 구하는 방법 로직

앞으로 갔다 뒤로 갔다 한 번씩 해주면 된다. 방향 설정하는 게 중요하다. 앞으로 가면서 최소 거리를 설정하고, 다시 되돌아오면서 최소 거리를 비교하는 로직.

2. 문제 풀이

import java.util.Scanner;

public class Main {

    public static int[] solution(String str,char c){
        int [] answer = new int[str.length()];
        char[] chars = str.toCharArray();
        int p = str.length();
        for (int i = 0; i < answer.length; i++) {
            if(chars[i] == c){
                p=0;
            }else{
                p++;
            }
            answer[i] = p;
        }

        p = str.length();

        for (int i = str.length()-1; i >=0 ; i--) {
            if(chars[i] == c){
                p=0;
                answer[i] = p;
            }else{
                p++;
                answer[i] = Math.min(answer[i],p);
            }
        }

        return answer;
    }
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String str = kb.next();
        char c = kb.next().charAt(0);
        for (int i : solution(str, c)) {
            System.out.print(i+" ");
        }

    }
}
728x90
반응형