<섹션1-STRING> 10. 가장 짧은 문자거리

조이·2021년 7월 20일
0

자바 알고리즘

목록 보기
10/41
post-thumbnail

10. 가장 짧은 문자거리

<설명>

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

<입력>

첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다. 문자열의 길이는 100을 넘지 않는다.

<출력>

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

===================================================

<코드>

charAt(i)를 이용하여 왼쪽 특정 문자와 비교하여 값을 넣는다. 그런 다음 끝에서 부터 오른쪽에 있는 특정 문자와 비교하여 길이를 구하고 그 구한 값을 먼저 배열에 저장되어 있는 값을 Math.min(x,y)를 이용하여 더 작은 값으로 교환하여 다시 넣는다. 그 후, 답을 반환한다.

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+" ");
		}
	}
}

<중요>

1) 비교하여 더 작은 값을 구하는 방법

  • Math.min(x,y);
profile
joy_study

0개의 댓글