[백준/BOJ] 백준 1120번 : 문자열
2020. 6. 11. 06:04ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/1120
문자열 a와 b의 길이 차이를 구하여 diff라 하고, 문자열 a의 앞과 뒤에 문자열 b의 앞에서 0개, 뒤에서 diff개 붙이는 것부터 앞에서 diff개, 뒤에서 0개 붙이는 것까지 총 diff+1번 실행해보며 그중 문자가 다른 것의 최소 개수를 구한다.
코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
string a;
string b;
int diff;
int minresult = 987654321;
int count;
cin >> a >> b;
//a와 b의 길이 차이를 구한다
diff = b.size() - a.size();
//앞에 0개 뒤에 diff개 붙여보기 부터 앞에 diff개 뒤에 0개 붙여보기까지 진행한다
for (int i = 0; i <= diff; i++)
{
string temp = a; //a를 대신해 앞 뒤로 문자열을 붙여보기 위해 a와 같은 temp를 만든다
int addfront = i;//temp앞에 붙일 문자열의 개수
int addback = diff - i;//temp뒤에 붙일 문자열의 개수
temp = b.substr(0, addfront) + temp;//b의 앞 addfront개를 temp 앞에 붙인다
temp = temp + b.substr(b.size() - addback, addback);//b의 뒤 addback개를 temp 뒤에 붙인다
//temp와 b를 비교해 문자가 다른것의 개수를 구한다
count = 0;
for (int j = 0; j < b.size(); j++)
{
if (temp[j] != b[j])
count++;
}
//최소 개수를 구한다
minresult = min(minresult, count);
}
cout << minresult;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 1000번 : A+B (0) | 2020.06.13 |
---|---|
[백준/BOJ] 백준 1049번 : 기타줄 (0) | 2020.06.12 |
[백준/BOJ] 백준 2875번 : 대회 or 인턴 (0) | 2020.06.10 |
[백준/BOJ] 백준 2217번 : 로프 (0) | 2020.06.09 |
[백준/BOJ] 백준 5585번 : 거스름돈 (0) | 2020.06.09 |