반응형

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇

 

 

 

 

 

 

문제 해결고민

규칙을 찾는게 관건이었다.

얼추 계산해 보니 좌측에서 우측으로 순회를 1번 돌고 

우측에서 좌측으로 순회를 한번 더 돌아야 하는 것 같았다.

하지만 규칙을 찾지 못하여서 많이 당황했다

선생님의 풀이를 보고 알게 된 사실

작은 수를 넣으면 되는 거였다는 것..

 

 

 

 

 

풀이과정

import java.util.Scanner;
public class Main {
    public int[] solution(String str, char t) {
        int[] answer = new int[str.length()];
        int p = 1000;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == t) {
                p = 0;
                answer[i] = p;
            } else {
                p++;
                answer[i] = p;
            }
        }
        p=1000;
        for (int i = str.length()-1; i >= 0 ; i--) {
            if (str.charAt(i) == t) p = 0;
            else {
                p++;
                answer[i] = Math.min(answer[i], p);
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        char t = in.next().charAt(0);
        for (int x : T.solution(s,t)) System.out.print(x + " ");
    }
}

 

반응형
유리쯔의일상