문자 사이의 거리 구하기

최준호·2021년 8월 4일
0

알고리즘 강의

목록 보기
6/79

설명

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

코드

public class CharacterDistance {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String input1 = in.next();
        String input2 = in.next();
        solution(input1, input2);
    }
    public static void solution(String input1, String target){
        //String을 char 배열로 변경하여 순회하고
        //char 배열의 길이만큼 저장해둘 배열을 만들어둬야함
        char[] chars = input1.toCharArray();
        int length = chars.length;
        int[] answer = new int[length];
        int p = 1000; //기준이 되는 수 (문제의 제한사항에 문자사이의 거리는 100을 넘기지 않는다고 했으므로 더 큰 수를 기준으로 잡음)

        //좌에서 우로 탐색
        for(int i=0; i<length; i++){
            String s = String.valueOf(chars[i]);
            if(target.equals(s)){
                p = 0;
                answer[i] = p;
            }else{
                answer[i] = ++p;
            }
        }
        //우에서 좌로 탐색
        for(int i=length-1; i>=0; i--){
            String s = String.valueOf(chars[i]);
            if(target.equals(s)){
                p = 0;
                answer[i] = p;
            }else{
                int su = answer[i];
                p++;
                if(su>p){
                    answer[i] = p;
                }
            }
        }

        StringBuilder sb = new StringBuilder();
        for(int i : answer){
            sb.append(i+" ");
        }
        System.out.println(sb.toString().trim());
    }
}

문자열을 입력 받았을 때 특정 문자를 기준으로 문자 사이의 거리를 구하는 문제였다. 처음 접근해본 문제라서 어떻게 풀어야할지 몰랐는데 강의를 보면서 힌트를 얻으니 엄청 쉬운 문제가 되어버렸다.

가장 중요한것은 탐색이란것은 앞에서 뒤로만 하는 것이 아니라 뒤에서 앞으로도 가능하다는 것이다.

탐색은 꼭 앞에서 뒤로만 가는것이 아니다!

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글