1번 문제는 주어진 int형 배열 nums와 target인 정수를 받아서 풀어야 하는 문제.
nums 배열 중 두 요소의 합이 target이 되는 경우 두 수의 index를 int형 배열로 반환하면 된다.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
무조건 하나의 답이 존재하고 배열 요소 하나를 두 번 더하면 안 된다. 정답의 index 순서는 상관없는 것 같다.
예시로 확인해보면 nums로 받은 배열 중 두 요소의 합이 9가 되는 경우는 2와 7을 더한 경우이므로 두 값의 index인 0과 1을 배열로 반환하면 된다.
내가 푼 방법
보자마자 그냥 단순하게 for문 두 번 돌리면 되겠네~ 하고 풀었다. 요소를 여러개 더하는 것이 아니라 딱 두 개만 더하는 거니까 단순 반복문으로 풀면 금방 풀릴 것 같다고 생각했다.
class Solution {
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
let result: [Int] = [0, 1]
for first in 0..<nums.count {
if first + 1 >= nums.count { continue }
for second in first + 1..<nums.count {
if nums[first] + nums[second] == target {
return [first, second]
}
}
}
return result
}
}
정말 단순하게 first 인덱스부터 큰 for문을 돌고 내부에서는 그 index부터 돌면서 두 요소의 합이 target이 되는지 판단해서 맞으면 바로 return을 때렸다.
대신 OutOfIndex 에러가 나지 않도록 second는 배열 요소의 끝을 넘기는지 체크해주었다.
근데 진짜 이상한게 같은 코드인데 변수명이 길면 실행 시간이 길어진다.. 왜일까..?
어쨌거나 실행 시간은 60ms, 메모리는 14.6MB로 통과!
반응형
'Algorithm' 카테고리의 다른 글
Swift로 Leet Code 문제 풀기 - 21. Merge Two Sorted Lists (Easy) (0) | 2022.06.27 |
---|---|
Swift로 Leet Code 문제 풀기 - 14. Longest Common Prefix (Easy) (0) | 2022.02.18 |
Swift로 Leet Code 문제 풀기 - 13. Roman to Integer (Easy) (0) | 2022.02.13 |
Swift로 Leet Code 문제 풀기 - 9. Palindrome Number (Easy) (0) | 2022.02.07 |
[iOS] Swift 알고리즘 문제 풀기 - input 입력 받기 (0) | 2022.01.28 |