문제 : https://www.acmicpc.net/problem/1120
1120번: 문자열
길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 길이는 B의 길이보다 작거나 같다. 이제 A의 길이가 B의 길이와 같아질 때 까지 다음과 같은 연산을 할 수 있다. A의 앞에 아무 알파벳이나 추가한다. A의 뒤에 아무 알파벳이나 추가한다. 이때, A와 B의 길이가 같으
www.acmicpc.net
문제 요약 : A와 B의 길이를 같게 하면서 틀린문자의 개수를 최소화 했을때 개수 출력
입력 | 출력 |
1 ≤ l(A) ≤ l(B)≤ 50 A, B [a-z] |
A와 B의 길이를 같게 하면서 틀린 문자의 개수 출력
|
JAVA
채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 |
16511925 | cbkpar | 1120 | 맞았습니다!! | 13056KB | 76ms | Java | 787B |
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String a,b;
int n,m,i,j,s,k;
StringTokenizer st = new StringTokenizer(br.readLine());
a = st.nextToken();
b = st.nextToken();
n = a.length();
m = b.length();
s=50;
for(i=0;i<=m-n;i++) {
k=n;
for(j=0;j<n;j++) {//차례 차례 지나가면서 문자가 같으면 k를 1씩 줄임
if(a.charAt(j)==b.charAt(i+j)) k--;
}
s=Math.min(s, k); //현재까지 계산한 값보다 작으면 치환
}
bw.write(s+"\n");
br.close();
bw.close();
}
}
'백준온라인' 카테고리의 다른 글
[백준온라인] 1699번 제곱 수의 합 (0) | 2019.12.19 |
---|---|
[백준온라인] 1138번 한 줄로 서기 (0) | 2019.12.18 |
[백준온라인] 1049번 기타줄 (0) | 2019.12.18 |
[백준온라인] 6603번 로또 (0) | 2019.12.17 |
[백준온라인] 2042번 구간 합 구하기 (0) | 2019.12.14 |