๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1120)
< ๋ฌธ์์ด >
๋ฌธ์ ํ์ด
A์ ์ ๋๋ ๋ค์ ์๋ฌด ์ํ๋ฒณ์ด๋ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก ์ด๋ค ์ํ๋ฒณ์ ์ถ๊ฐํ ์ง๋ ๊ณ ๋ คํ์ง ์์๋ ๋๋ค. A์ B์ ์ฐจ์ด๋ฅผ ์ต์๋ก ๋ง๋๋ ๊ฒ์ด ๋ชฉํ์ด๋ฏ๋ก B์ ์ผ์นํ๋ ์ํ๋ฒณ์ ๋ฃ๋๋ค๊ณ ๊ฐ์ ํ๋ค. ์ฐจ์ด๋ฅผ ์ต์๋ก ๋ง๋ค๊ธฐ ์ํด ๊ณ ๋ คํ ๊ฒ์ ์๊ณผ ๋ค์ ์ถ๊ฐํ ๊ฐ์์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํด ๋ณธ๋ค.
๋ง์ฝ A์ B์ ๊ธธ์ด ์ฐจ์ด๊ฐ 3์ด๋ผ๋ฉด (์, ๋ค) ์์ผ๋ก (3,0), (2,1), (1,2), (0,3)๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํด ๋ณธ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _1120_ { // ๋ฌธ์์ด
static String A, B;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
A = st.nextToken();
B = st.nextToken();
int d = B.length() - A.length();
int result = B.length();
if (d == 0) {
result = Math.min(result, diff(0));
} else {
while (d >= 0) {
result = Math.min(result, diff(d--));
}
}
System.out.println(result);
}
private static int diff(int left) {
int answer = 0;
for (int i = left; i < left + A.length(); i++) {
if (A.charAt(i - left) != B.charAt(i)) {
answer += 1;
}
}
return answer;
}
}
๋ณ์)
A, B : ๋ฌธ์์ด
d : A์ B์ ๊ธธ์ด ์ฐจ
result : A์ B์ ์ฐจ์ด ์ต์
A์ B์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ๋๋ค. A์ B์ ๊ธธ์ด ์ฐจ์ด๋ฅผ ๊ตฌํ ํ ๊ธธ์ด ์ฐจ์ด๊ฐ 0์ด๋ผ๋ฉด A์ B์ ์ฐจ์ด ๊ฐ์๋ฅผ ๊ตฌํ๋ค. ๊ธธ์ด ์ฐจ์ด๊ฐ 0์ด ์๋๋ผ๋ฉด ์๊ณผ ๋ค์ ์ถ๊ฐํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ ํ diff ํจ์๋ฅผ ํธ์ถํ๋ค. diff์ ๋ฐํ ๊ฐ์ ํตํด A์ B์ ์ต์ ์ฐจ์ด๋ฅผ ๊ตฌํด ์ถ๋ ฅํ๋ค.
diff(int left)
์ผ์ชฝ์ ๋ช ๊ฐ๋ฅผ ์ถ๊ฐํ ๊ฒ์ธ์ง ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ค. ์ผ์ชฝ์ ์ถ๊ฐํ ๊ฐ์๋งํผ B์ ์ผ์นํ๋ค๊ณ ๊ฐ์ ํ๊ณ ๊ทธ ํ๋ถํฐ A์ B๋ฅผ ๋น๊ตํด ์ฐจ์ด ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 5002_๋์ด๋งจ (0) | 2024.06.19 |
---|---|
[Baekjoon] 2072_์ค๋ชฉ (0) | 2024.06.18 |
[Baekjoon] 12887_๊ฒฝ๋ก ๊ฒ์ (0) | 2024.06.14 |
[Baekjoon] 29891_์ฒดํฌํฌ์ธํธ ๋ฌ๋ฆฌ๊ธฐ (0) | 2024.06.13 |
[Baekjoon] 23246_Sport Climbing Combined (0) | 2024.06.12 |