1195. 킥다운
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;
}
}
Author And Source
이 문제에 관하여(1195. 킥다운), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jms8732/1195.-킥다운저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)