UpDown Dev Story
알고리즘 연습 - 가장 짧은 문자거리 본문
아래 강의를 보면서 연습하고 기록하고 있습니다
문제
내 소스코드
import java.util.Scanner;
public class Algorithm {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String inputString = sc.next();
char inputSearchString = sc.next().charAt(0);
char[] chars = inputString.toCharArray();
int[] result = new int[chars.length];
int tmp = 1000;
for (int i = 0; i < chars.length; i++) {
if (chars[i] == inputSearchString) {
tmp = 0;
} else {
tmp++;
}
result[i] = tmp;
}
tmp = 1000;
for (int j = chars.length - 1; j >= 0; j--) {
if (chars[j] == inputSearchString) {
tmp = 0;
} else {
tmp++;
result[j] = Math.min(result[j], tmp);
}
}
for (int k = 0; k < chars.length; k++) {
System.out.print(result[k] + " ");
}
}
}
내 소스코드 해설
- 사용자에게 단어를 입력받고 왼쪽부터 loop를 돈다 이때 1000으로 두는것은 왼쪽에 아무런 숫자가 없기때문에 큰 수로 둔다
- loop를 돌면서 비교할 숫자와 같으면 0 아니면 1씩 더해준다 그렇게 하나의 배열을 만들고
- 다시 입력받은 단어를 오른쪽 부터 loop를 돌면서 비교할 숫자와 같으면 0 아니면 미리 만든 배열의 위치와 현재 만든 숫자와 비교하여
- 그 자리에 더 작은 값을 넣어준다 그렇게 쭉 돌아서 출력
참고사항
- 왼쪽부터 쭉 돌아서 비교할 문자와 얼마나 떨어졌는지 배열을 만들고
- 오른쪽부터 쭉 돌아서 비교할 문자와 얼마나 떨어졌는지 배열을 만들어
- 두개의 배열을 의 각 위치값중 작은 값만 가진 배열을 만든다면 그 값이 비교할 문자와 왼쪽 오른쪽을 모두 비교해서 가장 짧은 문자 거리이다
'Algorithm' 카테고리의 다른 글
알고리즘 연습 - 암호 (0) | 2021.05.24 |
---|---|
알고리즘 연습 - 문자열 압축 (0) | 2021.05.24 |
알고리즘 연습 - 숫자만 추출 (0) | 2021.05.23 |
알고리즘 연습 - 유효한 팰린드롬 (0) | 2021.05.23 |
알고리즘 연습 - 회문 문자열 (0) | 2021.05.23 |
Comments