기초코딩테스트 - String 가장짧은거리

1248 단어 JavaJava

문제

설명

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

입력

첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다.

문자열의 길이는 100을 넘지 않는다.

출력

첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.

예시 입력 1

teachermode e

예시 출력 1

1 0 1 2 1 0 1 2 2 1 0

코드

import java.util.*;
class Main {	
	public int[] solution(String s, char t){
		int[] answer=new int[s.length()];
		int p=1000;
		for(int i=0; i<s.length(); i++){
			if(s.charAt(i)==t){
				p=0;
				answer[i]=p;
			}
			else{
				p++;
				answer[i]=p;
			}
		}
		p=1000;
		for(int i=s.length()-1; i>=0; i--){
			if(s.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 kb = new Scanner(System.in);
		String str=kb.next();
		char c=kb.next().charAt(0);
		for(int x : T.solution(str, c)){
			System.out.print(x+" ");
		}
	}
}

첫시작을 최대길이를 막연히 큰숫자인 1000으로 두고 탐색 시작 한방향식 두번 탐색해서 거리를 계산한다.
오른쪽으로 진행해서 같은 글자 나오면 0으로 리셋후 그다음부터 거리를 계산해서 int 리스트에 넣어준다.

그후 왼쪽으로 탐색 진행해서 구한 숫자값과 이전에 구해놓은 숫자의 최소값으로 교체해준다.

좋은 웹페이지 즐겨찾기