본문 바로가기

알고리즘/백준 문제풀이

백준 - 1120 (kotlin)

728x90

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의 앞뒤에 문자를 붙임

 

아이디어

  • 어차피 최소값을 묻는 문제이므로 굳이 문자열 A에 문자를 붙여가며 비교할 필요 없이 문자열 B를 A의 범위만큼 돌면서 차이점이 최소가 될때를 찾으면 됨(어차피 앞뒤로 B랑 같은 문자를 붙였을때가 최소이므로)

 

 

구현

import java.util.*


fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
    val (A, B) = readLine()!!.split(" ")
    var ans = A.length
    for (i in 0..(B.length - A.length)) {
        var tmp = 0
        for (j in A.indices) {
            if (A[j] != B[j + i]) tmp++

        }
        if (ans > tmp) ans = tmp //최소값 저장
    }
    print(ans)

}

 

비고

아이디어를 떠올리는 건 쉬웠는데 순간 이거 구현을 어떻게 하더라 했음...구현력이 좋아야 아이디어를 떠올리기도 쉬운듯