본문 바로가기

Algorithm (Java)/인프런 알고리즘강의

[인프런/알고리즘] 문자열 - 가장 짧은 문자거리

문제

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

입력설명

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

출력설명

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

입력예제

teachermode, e

출력예제

10121012210

package prep.test.coding;

import java.util.Arrays;
import java.util.Scanner;

public class Distance {
	public int[] solution(String input, char target ) {
		int[] result = new int[input.length()];
		int count =0; 
		for(int i=0; i<input.length();i++) {
			if(input.charAt(i) == target) {
				count = 0;
			} else {
				count++;
			}			
			result[i] = count;
		}
		
		for(int i=input.length()-1; i>=0; i--) {
			if(input.charAt(i) == target) {
				count =0;
				result[i]  = count;
			} else {
				count++;
				if(result[i] > count ) result[i] = count;
			}
		}
		return result;
	}
	
	public static void main(String[] args){
		Distance distance = new Distance();
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		char target = sc.next().charAt(0);
		System.out.println(Arrays.toString(distance.solution(input, target)));
	}


}

풀이

1. 왼->오 target과 일치여부 확인 후 가장 가까운 왼쪽 target으로부터 거리 계산 후 result 배열에 넣기

2. 오->왼 target과 일치여부 확인 후, 가장 가까운 오른쪽 target으로부터의 거리 계산 후 기존  result 배열  인덱스 값과  비교, 오른쪽으로부터 탐색 값이 더 작을 경우 덮어쓰기

 

 

출처

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84

 

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com