프로그래머스 (Swift)/기초 (123) 썸네일형 리스트형 [Day15-3] 1로 만들기 문제 내 정답 코드 import Foundation func solution(_ num_list:[Int]) -> Int { var num_list = num_list var count:Int = 0 for i in 0.. [Day15-2] 조건에 맞게 수열 변환하기 2 문제 내 정답 코드 import Foundation func solution(_ arr:[Int]) -> Int { var count = 0 var arr1:[Int] = arr var arr2:[Int] = [] while(true) { arr2 = arr1 for i in 0..= 50 && arr1[i].isMultiple(of: 2) { arr1[i] /= 2 } else if arr1[i] < 50 && !arr1[i].isMultiple(of: 2) { arr1[i] = arr1[i] * 2 + 1 } } if arr1 == arr2 { return count } count += 1 } return 0 } # 1. 뭔가 어렵지는 않은데 헷갈렸던 문제 2. 조건에 맞게 arr값들을 계속 바꿔주면.. [Day15-1] 조건에 맞게 수열 변환하기 1 문제 내 정답 코드 import Foundation func solution(_ arr:[Int]) -> [Int] { var arr = arr for i in 0..= 50 && arr[i].isMultiple(of: 2) { arr[i] /= 2 } else if arr[i] < 50 && !arr[i].isMultiple(of: 2) { arr[i] *= 2 } } return arr } # 1. 제목 그대로 2개의 조건에 맞게 배열의 값을 원하는대로 바꿔주었다. 배운 기술 [Day14-5] 수열과 구간 쿼리 1 문제 내 정답 코드 import Foundation func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] { var arr = arr for query in queries { let (s, e) = (query[0], query[1]) (s...e).map { arr[$0] += 1 } } return arr } # 1. queries로 반복문을 돌려 s, e를 구하고 2. arr의 s ~ e만큼의 범위만큼 1을 더해준다. 배운 기술 [Day14-4] n보다 커질 때까지 더하기 문제 내 정답 코드 import Foundation func solution(_ numbers:[Int], _ n:Int) -> Int { var result = 0 for i in 0.. n { return result } } return 0 } # 1. 반복문을 돌리고 n보다 커지기 전까지 더하면 되는 간단한 문제 배운 기술 [Day14-3] 할 일 목록 문제 내 정답 코드 import Foundation func solution(_ todo_list:[String], _ finished:[Bool]) -> [String] { return finished.enumerated().filter { $0.element == false }.map { todo_list[$0.offset] } } # 1. finished에서 false인 인덱스를 필터링 해주고 2. 해당 인덱스로 이루어진 todo_list배열을 반환한다. 배운 기술 [Day14-2] 5명씩 문제 내 정답 코드 import Foundation func solution(_ names:[String]) -> [String] { return names.enumerated().filter { $0.offset.isMultiple(of: 5) }.map { String($0.element) } } # 1. filter를 통해 5의 배수 인덱스만 남기고 2. 남은 인덱스의 값을 배열에 저장하여 반환한다. 배운 기술 [Day14-1] 홀수 vs 짝수 문제 내 정답 코드 import Foundation func solution(_ num_list:[Int]) -> Int { let a = num_list.enumerated().filter { $0.offset.isMultiple(of: 2) }.reduce(0) { $0 + $1.element } let b = num_list.enumerated().filter { !$0.offset.isMultiple(of: 2) }.reduce(0) { $0 + $1.element } return a >= b ? a : b } # 1. filter와 reduce를 사용해서 홀수의 합과 짝수의 합을 구한다. 2. 구한 두 개의 값을 비교하여 더 큰 값을 반환한다. 배운 기술 [Day13-5] n개 간격의 원소들 문제 내 정답 코드 import Foundation func solution(_ num_list:[Int], _ n:Int) -> [Int] { return num_list.enumerated().filter { $0.offset.isMultiple(of: n) }.map { Int($0.element) } } # 1. 이 문제도 복잡하게 풀 수 있지만 2. enumerated와 filter를 잘 활용하면 쉽게 풀 수 있다. 3. 사람들은 stride를 사용했던데 공부해봐야겠다. 배운 기술 [Day13-4] n 번째 원소까지 문제 내 정답 코드 import Foundation func solution(_ num_list:[Int], _ n:Int) -> [Int] { return Array(num_list[...(n-1)]) } # 1. 13-1문제와 비슷한 문제로 매우 간단한 문제이다. 2. 배열 범위를 지정하는 기본적인 방법을 알려주기 위한 문제인 것 같다. 배운 기술 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음