본문 바로가기
Algorithm/Leetcode

LeetCode - Longest Common Prefix

by du.it.ddu 2020. 6. 27.
반응형

문제 링크 : https://leetcode.com/problems/longest-common-prefix/

난이도 : Easy


문제 풀이 :

주어진 문자열들이 공통으로 갖고 있는 가장 긴 접두어를 찾는 문제다.

가장 긴 접두어는 가장 짧은 문자열의 길이보다 작거나 같다는 것만 생각하면 어렵지 않게 풀 수 있다.

가장 짧은 문자열을 기준으로 모든 문자열들의 맨 앞부터 시작하여 공통으로 가지고 있는 것들을 더해가면 된다.


소스 코드 :

class LongestCommonPrefix {
    fun longestCommonPrefix(strs: Array<String>): String {
        if(strs.isEmpty()) return ""
        else if(strs.size == 1) return strs[0]

        val sortedStrs = strs.sortedBy { it.length }
        val stringBuilder = StringBuilder("")

        for (i in sortedStrs[0].indices) {
            val cur = sortedStrs[0][i]
            var isHasAllStr = true

            for (j in 1 until sortedStrs.size) {
                if(sortedStrs[j][i] != cur) {
                    isHasAllStr = false
                    break
                }
            }

            if(isHasAllStr) {
                stringBuilder.append(cur)
            } else {
                break
            }
        }

        return stringBuilder.toString()
    }
}

후기 : 

다른 사람들의 풀이를 보니 정렬을 하지 않고 더 빠른 정답을 찾아내는 것이 있었다. 보고나니 이해는 되었다.

또한 이분탐색을 이용하는 방법도 있던데 아직 이해는 못했다. 나중에 시간을 내어 다시 한번 봐야겠다.

반응형

'Algorithm > Leetcode' 카테고리의 다른 글

LeetCode - Merge Two Sorted Lists  (0) 2020.07.30
LeetCode - Valid Parentheses  (0) 2020.06.27
LeetCode - Roman to Integer  (0) 2020.06.27
LeetCode - Reverse Integer  (0) 2020.06.27
LeetCode - Two Sum  (0) 2020.06.27