14번 문제는 주어진 단어 배열에서 공통으로 나타나는 prefix를 찾아서 반환하는 문제였다.
예시를 보면 바로 이해할 수 있다.
1번 예시를 보면 strs로 받은 단어 세 개의 공통 prefix인 fl이 output으로 반환된다.
2번은 공통 prefix가 존재하지 않으므로 ""를 반환한다.
내가 푼 방법
1. 각 단어의 글자를 하나씩 돌면서 같은 글자면 result에 추가, 하나라도 다른 게 나오면 바로 결과를 return
생각은 간단했는데 코드는 그렇지 못했네..ㅎㅋㅎㅋ
class Solution {
func longestCommonPrefix(_ strs: [String]) -> String {
var result: String = ""
var index: Int = 0
while true {
var char: Character = Character.init("-")
for item in strs {
guard item.count != 0, item.count > index else { return result }
let firstChar = item[item.index(item.startIndex, offsetBy: index)]
if !char.isLetter {
char = firstChar
} else {
if char == firstChar {
continue
} else {
return result
}
}
}
result.append(char)
index = index + 1
}
return result
}
}
for문으로 각 배열을 돌면서 index번째 char를 가져온다. 그리고 다른 단어들과 글자가 다르면 return 같으면 continue를 수행하도록 했다.
일단 while true로 도는게 마음에 안 들고... index가 필요한 것도 마음에 안 들고... if 내부가 지저분한 것도 마음에 안 든다 흑흑..
다들 어떻게 그렇게 깔끔하게 푸는걸까..? 고차 함수도 공부해서 깔끔하게 짜는 법좀 공부해봐야지
역시나 결과도 마음에 안들었음..
반응형
'Algorithm' 카테고리의 다른 글
Swift로 Leet Code 문제 풀기 - 26. Remove Duplicates from Sorted Array (Easy) (0) | 2022.06.28 |
---|---|
Swift로 Leet Code 문제 풀기 - 21. Merge Two Sorted Lists (Easy) (0) | 2022.06.27 |
Swift로 Leet Code 문제 풀기 - 13. Roman to Integer (Easy) (0) | 2022.02.13 |
Swift로 Leet Code 문제 풀기 - 9. Palindrome Number (Easy) (0) | 2022.02.07 |
Swift로 Leet Code 문제 풀기 - 1. Two Sum (Easy) (0) | 2022.02.04 |