Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

UpDown Dev Story

알고리즘 연습 - 가장 짧은 문자거리 본문

Algorithm

알고리즘 연습 - 가장 짧은 문자거리

updown 2021. 5. 23. 23:15

아래 강의를 보면서 연습하고 기록하고 있습니다

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

 

문제

내 소스코드

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] + " ");
		}
	}

}

내 소스코드 해설

  1. 사용자에게 단어를 입력받고 왼쪽부터 loop를 돈다 이때 1000으로 두는것은 왼쪽에 아무런 숫자가 없기때문에 큰 수로 둔다
  2. loop를 돌면서 비교할 숫자와 같으면 0 아니면 1씩 더해준다 그렇게 하나의 배열을 만들고
  3. 다시 입력받은 단어를 오른쪽 부터 loop를 돌면서 비교할 숫자와 같으면 0 아니면 미리 만든 배열의 위치와 현재 만든 숫자와 비교하여
  4. 그 자리에 더 작은 값을 넣어준다 그렇게 쭉 돌아서 출력

참고사항

  • 왼쪽부터 쭉 돌아서 비교할 문자와 얼마나 떨어졌는지 배열을 만들고
  • 오른쪽부터 쭉 돌아서 비교할 문자와 얼마나 떨어졌는지 배열을 만들어
  • 두개의 배열을 의 각 위치값중 작은 값만 가진 배열을 만든다면 그 값이 비교할 문자와 왼쪽 오른쪽을 모두 비교해서 가장 짧은 문자 거리이다
Comments