1195. 킥다운

12075 단어 시뮬레이션bojboj

문제 링크

1. 문제 해결


문자열 하나를 기준으로 잡고 나머지 하나를 기준의 끝과 끝으로 이동시키면서 가장 짧은 가로 너비를 구한다.

예제 입력 1으로 동작 과정을 살펴보면 아래와 같이 진행된다.

1. step1

2. step2

3. step3

4. step4

5. step5

6. step6

7. step7

8. step8

9. step9

2. 소스 코드

//킥다운
import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		String a1 = sc.nextLine();
		String a2 = sc.nextLine();

		System.out.println(simulation(a1, a2));
	}

	private static int simulation(String a1, String a2) {
		char[] a = a1.toCharArray();
		char[] b = a2.toCharArray();

		int a_idx = a.length;
		int len = a.length + b.length;

		while (a_idx >= 0) {
			int c = 0;
			int b_idx = 0;
			int start = a_idx;
			boolean check = true;
			while (start < a.length && b_idx < b.length) {
				if (a[start] == '2' && a[start] == b[b_idx]) {
					check = false;
					break;
				}

				c++;
				start++;
				b_idx++;
			}

			if (check)
				len = Math.min(len, a.length + b.length - c);
			a_idx--;
		}

		int b_idx = 1;

		while (b_idx < b.length) {
			int c = 0;
			a_idx = 0;
			int start = b_idx;
			boolean check = true;
			while (start < b.length && a_idx < a.length) {
				if (b[start] == '2' && b[start] == a[a_idx]) {
					check = false;
					break;
				}

				c++;
				start++;
				a_idx++;
			}

			if (check)
				len = Math.min(len, a.length + b.length - c);
			b_idx++;
		}
		return len;
	}

}

좋은 웹페이지 즐겨찾기