코딩 테스트/BOJ

C# 1120 문자열

s0002 2023. 1. 13. 17:58

A="addabc", B="aababbc"일 때

A에 어떤 문자를 넣든 어차피 차이가 최소가 되도록 할 것이므로

B와 가장 비슷해지도록 만들 것이다

 

A[0]부터 A[5]를 B[0]부터 B[5]와 비교했을 때의 차이: 3

A[0]부터 A[5]를 B[1]부터 B[6]와 비교했을 때의 차이: 2

이렇게 모든 경우를 비교 했을 때 차이의 최솟값은 2가 나온다

 

마찬가지로 다른 예제들도 최솟값을 찾을 수 있다

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study13
{
    class App
    {
        public App()
        {
            //BOJ 1120 문자열 
            //문제를 잘 읽고 푸세요 
            //https://www.acmicpc.net/problem/1120

            string[] arr = {
                "adaabc aababbc",
                "hello xello",
                "koder topcoder",
                "abc topabcoder",
                "giorgi igroig"
            };

            //여기부터 작성 하세요 

            for(int i = 0; i < arr.Length; i++)
            {
                string[] s = arr[i].Split(' ');
                int min = GetDifferenceMin(s[0], s[1]);

                Console.WriteLine(min);
            }
        }

        int GetDifferenceMin(string A, string B)
        {
            int min = A.Length;
            for (int i = 0; i < B.Length - A.Length + 1; i++)
            {
                int count = 0;
                for (int j = 0; j < A.Length; j++)
                {
                    if (A[j] != B[i + j])
                        count++;
                }
                min = Math.Min(count, min);
            }
            return min;
        }
    }
}

https://www.acmicpc.net/problem/1120

'코딩 테스트 > BOJ' 카테고리의 다른 글

C# 11720 숫자의 합  (0) 2023.01.17
C# 10988 팰린드롬  (0) 2023.01.17
C# 1181 단어 정렬  (0) 2023.01.12
C# 10173 니모를 찾아서  (0) 2023.01.12
C# 4458 첫 글자를 대문자로  (0) 2023.01.12