import java.util.*;
class Main {
public int[] solution(String str, char c) {
// 배열 길이 설정
int[] answer = new int[str.length()];
// p 값 설정
int p = 1000;
// 왼쪽에서 오른쪽으로 가는 반복문
for(int i = 0; i < str.length(); i++) {
// str의 한글자와 c가 같으면
if(str.charAt(i) == c) {
// 배열 해당 위치에 0으로 만들기
p = 0;
answer[i] = p;
} else {
// str의 한글자와 c가 다르면
// 배열 해당 위치에 1씩 더하기 [c와의 거리]
p++;
answer[i] = p;
}
}
// p값 초기화
p = 1000;
// 오른쪽에서 왼쪽으로 가는 반복문
for(int i = str.length()-1; i >= 0; i--) {
// str의 한글자와 c가 같으면
// 위 반복문에서 이미 0으로 만들어 놨다
if(str.charAt(i) == c) {
p = 0;
// str의 한글자와 c가 다르면
} else {
// p를 1 증가시킴
// 지금 배열의 값과 지금의 p값을 비교하여 낮은 수를 넣기
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 + " ");
}
}
}
import java.util.*;
class Main {
public 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;
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);
}
}
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 + " ");
}
}
}
'코딩테스트 > 기초' 카테고리의 다른 글
12. 암호 (0) | 2024.12.07 |
---|---|
11. 문자열 압축 (1) | 2024.12.07 |
9. 숫자만 추출 (1) | 2024.12.03 |
8. 유효한 팰린드롬 (0) | 2024.12.03 |
7. 회문 문자열 (0) | 2024.12.02 |