본문 바로가기

프로그래머스 (Swift)

(165)
[Day7-5] 배열 만들기 4 문제 내 정답 코드 import Foundation func solution(_ arr:[Int]) -> [Int] { var stk:[Int] = [] var i = 0 while i < arr.count { if stk.isEmpty { stk.append(arr[i]) i += 1 } else if stk.last! < arr[i] { stk.append(arr[i]) i += 1 } else { stk.removeLast() } } return stk } # 1. 문제의 조건문 3개만 만족시켜주면 어렵지 않은 문제이다. 2. 배열의 마지막 요소를 removeLast()를 통해 삭제할 수 있다는 것을 알았다. 배운 기술 1. removeLast() https://developer.apple.com/..
[Day7-4] 콜라츠 수열 만들기 문제 내 정답 코드 import Foundation func solution(_ n:Int) -> [Int] { var result:[Int] = [n] var num = n while num != 1 { if num.isMultiple(of: 2) { num /= 2 } else { num = 3 * num + 1 } result.append(num) } return result } # 1. while문과 조건문의 사용으로 어렵지 않게 해결하였다. 배운 기술
[Day7-3] 카운트 업 문제 내 정답 코드 import Foundation func solution(_ start_num:Int, _ end_num:Int) -> [Int] { return Array(start_num...end_num) } # 1. 간단한 문제 배운 기술
[Day7-2] 배열 만들기 2 문제 내 정답 코드 import Foundation func solution(_ l:Int, _ r:Int) -> [Int] { var result:[Int] = [] var bool = false for i in l...r { let num2String = String(i) for char in num2String { if char != "0" && char != "5" { bool = false break } else { bool = true } } if bool { result.append(i) } } if result.isEmpty { result.append(-1) } return result } # 1. String으로 바꾸고 2. 순회하며 0, 5가 아니라면 플래그의 값을 저장한다. 3. 플..
[Day7-1] 수열과 구간 쿼리4 문제 내정답 코드 import Foundation func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] { var arr = arr queries.forEach { let (s, e, k) = ($0[0], $0[1], $0[2]) (s...e).filter { $0.isMultiple(of: k) }.map { arr[$0] += 1 } } return arr } # 1. 저번 문제와 큰 차이가 없는 문제라 쉽게 해결하였다. 2. s, e, k를 구하고 s~e구간 중 k의 배수의 개수만큼 +1을 해주었다. 배운 기술
[Day6-5] 수열과 구간 쿼리2 문제 내 정답 코드 import Foundation func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] { var result:[Int] = [] for queries in queries { let s = queries[0] let e = queries[1] let k = queries[2] let arr = arr[s...e].filter{ $0 > k } if arr.count == 0 { result.append(-1) } else { result.append(arr.min()!) } } return result } # 1. filter를 통해 k보다 큰 수를 걸러내고 2. min함수를 통해 최소 값을 가져와 배열에 추가한다. 3. filter로 거른 ..
[Day6-4] 수열과 구간 쿼리 3 문제 내 정답 코드 import Foundation func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] { var arr = arr for i in 0.. [Int] { var result = arr for i in 0..
[Day6-3] 수 조작하기2 문제 내 정답 코드 func solution(_ numLog:[Int]) -> String { var result = "" for i in 0.. String { let dic = [1:"w", -1:"s", 10:"d", -10:"a"] return (1..
[Day6-2] 수 조작하기1 문제 내 정답 코드 import Foundation func solution(_ n:Int, _ control:String) -> Int { var result = n for char in control { switch char { case "w": result += 1 case "s": result -= 1 case "d": result += 10 case "a": result -= 10 default: break } } return result } # 1. control을 한 문자씩 확인하면서 각 문자에 맞게 result값을 계산한다. @ 다른 사람 풀이에서 인상 깊었던 풀이 dictionary가 무엇인지는 알고 있었지만 이렇게 사용할 생각은 못해봤다. dictionary와 reduce를 잘 활용한..
[Day6-1] 마지막 두 원소 문제 내 정답 코드 import Foundation func solution(_ num_list:[Int]) -> [Int] { var result = num_list var lastValue = num_list[num_list.count-1] var beforeValue = num_list[num_list.count-2] var plusValue = lastValue > beforeValue ? (lastValue-beforeValue) : lastValue * 2 result.append(plusValue) return result } # 1. 마지막 원소와 그 전의 원소를 구하고 2. 두 개의 값을 비교하여 새로 계산한 값을 배열에 추가한다. 배운 기술