알고리즘/BOJ

백준 1120번 문자열

lheunoia 2021. 3. 7. 19:07

 

 

 

문제 보러가기 : 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의

www.acmicpc.net

 

 

 

이번 문제는 문자열 문제였습니다.

 

A와 B의 길이를 같게 할 때 A와 B 길이의 차이만큼 A의 앞 또는 뒤에 B와 같은 문자를 추가해주면 되므로 이 부분은 구현할 필요없이 입력받은 A와 B의 차이를 구하면 됩니다. 😺

 

 

 

《문제 풀이》

 

1. B의 인덱스를 증가시켜 가면서 A의 길이만큼 A와 B의 차이를 계산

2. A와 B 문자열의 문자가 다르면 카운트

3. 결과 값과 카운트 값 중 더 작은값으로 갱신 

 

 

 

《C++ 코드

 

#include <bits/stdc++.h>

using namespace std;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	string A, B;
	cin>>A>>B;
	
	int Alen = A.length();
	int Blen = B.length();
	int def = Blen - Alen;
	
	// A와 B의 최대 차이는 50 
	int result = 50;
	for(int i=0; i<=def; i++) {
		int cnt = 0;
		
		for(int j=0; j<Alen; j++) {
			if(A[j] != B[j + i])
				cnt++;
		}
		// 최솟값 갱신  
		result = min(result, cnt);
	}
	 
	cout<<result;
	return 0;
}

 

 

개발 환경: Dev-C++

 

 

 

baekjoon - 정답 화면

 

 

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2583번 영역 구하기  (0) 2021.04.14
백준 2293번 동전 1  (0) 2021.03.18
백준 12852번 1로 만들기 2  (0) 2021.03.01
백준 2263번 트리의 순회  (0) 2021.02.25
백준 11404번 플로이드  (0) 2021.02.21