문제
한 개의 문자열 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 배열 인덱스 값과 비교, 오른쪽으로부터 탐색 값이 더 작을 경우 덮어쓰기
출처
'Algorithm (Java) > 인프런 알고리즘강의' 카테고리의 다른 글
[인프런/알고리즘] HashMap - 아나그램 (0) | 2023.04.26 |
---|---|
[인프런/알고리즘] HashMap - 학급회장 (0) | 2023.04.26 |
[인프런/알고리즘] 문자열 - 회문 문자열 (0) | 2023.04.25 |
[인프런/알고리즘] 문자열 - 특정문자 뒤집기 (0) | 2023.04.25 |
[인프런/알고리즘] 문자열 - 문장 내 가장 긴 단어 출력하기 (0) | 2023.04.25 |