일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- oj구축
- SWIFT
- STL
- 구축
- 비트마스킹
- hustoj
- SWEA
- IOS
- SW Expert Academy
- 풀이
- 저지시스템구축
- 소스코드
- xcode
- 삼성
- 온라인 저지 구축
- 역테
- BOJ
- SW역량테스트
- 역량테스트
- a형
- 모의 SW 역량테스트
- 알고리즘
- 백준
- 모의 SW역량테스트
- 7576
- 온라인저지시스템구축
- c++
- oj
- 삼성기출
- 개발
Archives
- Today
- Total
꾸르꾸르
[LeetCode] 1. Two Sum - Easy (Swift) 본문
문제링크
https://leetcode.com/problems/two-sum/
풀이방법
배열(Input) 중에서 2개의 수를 뽑아서 더한 값이 특정 값(Target)과 동일한지 체크하는 문제이다.
주어진 테케를 예시로 들면 [2, 7, 11, 15] 일때 4C2이므로 총 6가지의 경우의 수가 나오고, 여기서 2개의 합이 Target인지 체크하는 알고리즘을 만들면된다.
풀이는 먼저
1. index를 0~주어진배열의count 까지 for문을 돌린다 (첫번재의 숫자를 뽑는과정)
2. 수를 뽑은뒤, 남은 수들중에서 1개를 더뽑으면 된다. 그럼 현재 index+1부터 수를 뽑으면 중복없이 조합을 만들수있다. (두번째수를 뽑는과정)
3. exactly one solution 이라고 했으므로 중간에 return 시켜서 바로 끝내버려도 상관이 없다. 또 이래야 답은 1개일테니까..
첫번재 테케를 예를들면,
조합은 [2, 7] [2, 11] [2, 15] [7, 11] [7, 15] [11, 15] 순으로 만들어 질것이고,
이때 Target은 9이므로 합이 9인것은 [2,7]이다. [2, 7]의 각 index는 0,1 이므로 [0, 1] 배열을 리턴 시키면된다.
소스코드
class Solution {
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
var answer: [Int] = []
for (index, num) in nums.enumerated() {
for i in (index+1)..<nums.count {
if (num + nums[i]) == target {
answer.append(index)
answer.append(i)
return answer
}
}
}
return answer
}
}
Comments