10. 가장 짧은 문자 거리
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램
입력) 첫 번째 줄에 문자열 s와 문자 t가 주어집니다.
출력) 첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력합니다.
Math.min() 사용
import java.util.Scanner;
public class Main {
public static int[] solution(String str, char c) {
int[] answer = new int[str.length()]; // 배열 동적 할당
int p = 1000;
// 왼쪽부터
for (int i=0; i<str.length(); i++) {
if (str.charAt(i)==c) { // 같은 문자 만나면
p = 0;
answer[i] = p;
} else {
p++;
answer[i] = p;
}
}
// 오른쪽부터
p = 1000; // p 초기화
for (int i=str.length()-1; i>=0; i--) {
if (str.charAt(i)==c) p = 0;
else {
p++;
answer[i] = Math.min(answer[i], p); // 기존에 있던 값과 p 중 더 작은 값
}
}
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
char c = scanner.next().charAt(0);
for (int x : solution(str, c)) {
System.out.print(x + " ");
}
}
}
결과
입력
hellohihahaha h
출력
0 1 2 2 1 0 1 0 1 0 1 0 1
댓글