1120번: 문자열
길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의
www.acmicpc.net
접근 방법
aababbc
adaabc
차이 : 3개
aababbc
adaabc
차이 : 2개
양 옆으로 a와 b의 길이 차이 만큼 추가할 수 있기 때문에 추가하기 전의 최소값은 추가한 이후의 최소값과 동일하다.
Javascript
function solution() {
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.trim()
.split(" ")
.map((val) => val.trim());
let [a, b] = input;
let a_len = a.length;
let b_len = b.length;
let def = b_len - a_len;
let ans = [];
for (let i = 0; i <= def; i++) {
let min = 0;
for (let j = i; j < i + a_len; j++) {
if (a[j - i] !== b[j]) min++;
}
ans.push(min);
}
console.log(Math.min(...ans));
}
solution();
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin);
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string a,b;
cin>>a>>b;
int a_len = a.length();
int b_len = b.length();
int def = b_len-a_len;
vector<int> v_min;
for(int i=0;i<=def;i++){
int min=0;
for(int j=i;j<i+a_len;j++){
if(a[j-i]!=b[j]) min++;
}
v_min.push_back(min);
}
int ans = *min_element(v_min.begin(),v_min.end());
cout<<ans<<"\n";
return 0;
}
접근 방법만 인지하면 쉽게 구현할 수 있는 문제였다.
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 블랙잭 2798 (Javascript,c++) (0) | 2022.06.11 |
---|---|
[baekjoon] 영화감독 숌 1436 (Javascript, c++) (0) | 2022.06.11 |
[baekjoon] 한수 1065 (Javascript, c++) (0) | 2022.06.10 |
[baekjoon] 숫자 정사각형 1015 (Javascript, c++) (0) | 2022.06.09 |
[baekjoon] 행렬 곱셈 2740 (Javascript, c++) (0) | 2022.06.09 |