본문 바로가기

프로그래머스 (Swift)/lv 1

(42)
[lv1] 둘만의 암호 문제 내 정답 코드import Foundationfunc solution(_ s:String, _ skip:String, _ index:Int) -> String { var result = "" var temp = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"].filter { !skip.contains($0) } let count = temp.count let alphabet = temp.enumerated() for chr in s { let i = alphabet.fil..
[lv1] 없는 숫자 더하기 문제 내 정답 코드import Foundationfunc solution(_ numbers:[Int]) -> Int { return (0...9).filter { !numbers.contains($0) }.reduce(0,+)} #1. numbers에서 filter를 통해 0 ~ 9중 없는 숫자만 contains로 골라낸다.2. 골라낸 배열을 reduce로 모두 더해준다.배운 기술
[lv1] 덧칠하기 문제 내 정답 코드import Foundationfunc solution(_ n:Int, _ m:Int, _ section:[Int]) -> Int { // n 은 벽에 길이 // m 은 한 번에 칠할 수 있는 길이 // section 은 칠해야 하는 구역 // 가장 먼저 있는 빈 구역 m만큼 칠하고 section에서 삭제 var section = section var result = 0 // sction의 처음으로 와서 m만큼 숫자를 모두 삭제 // 다시 section 맨 앞으로 돌아와 반복 while(!section.isEmpty) { let first = section.first! let last = fi..
[lv1] 과일 장수 문제 내 정답 코드import Foundationfunc solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int { var score = score var box: [[Int]] = [] var result = 0 score = score.sorted().reversed() for i in stride(from: 0, to: score.count, by: m) { var group: [Int] = [] for j in i.. #1. 한 박스의 과일들 중 낮은 점수로 계산하기 때문에, 같은 점수의 과일들이 있으면 최대한 모아야 한다.2. 과일을 내림 차순으로 정렬하고 m개 만큼 포장해간다. (stride를 사용하여 ..
[lv1] 콜라 문제 문제 내 정답 코드import Foundationfunc solution(_ a:Int, _ b:Int, _ n:Int) -> Int { var result = 0 var n = n while(n >= a) { result += ((n / a) * b) let temp = n % a n = ((n / a) * b) + temp } return result} #1. result는 얻은 콜라의 개수이다.2. 남은 빈 병으로 콜라를 1개도 못 얻을 때 까지  반복하여 수행한다. while(n >= a)3. 빈병으로부터 얻을 수 있는 콜라를 result에 더하고4. a로 나눴을 때 나머지 값을 temp에 저장해놓는다. (빈 병)5. 얻은..
[lv1] 삼총사 문제 내 정답 코드import Foundationfunc solution(_ number:[Int]) -> Int { var result = 0 for i in 0.. #1. 배열을 처음부터 3개의 묶음으로 끝까지 가야한다.2. 3개의 반복문을 돌려 3개의 묶음을 가져오고3. 3개의 값을 더해 0이라면 result에 1을 더한다.4. 반복문을 모두 끝내고 result를 반환한다.배운 기술
[lv1] 추억 점수 문제 내 정답 코드import Foundationfunc solution(_ name:[String], _ yearning:[Int], _ photo:[[String]]) -> [Int] { var result:[Int] = [] var dic:[String:Int] = [:] for i in 0.. #1. dic이라는 딕셔너리를 선언하고,2. 이름에 따른 점수를 저장한다.3. photo를 반복문을 돌려 1장의 photo를 가져오고4. 한 장의 사진의 이름을 모두 가져와 이름에 따른 점수를 count에 더한다.5. 그렇게 photo의 모든 이름에 대한 점수를 더해 반환한다.배운 기술
[lv1] 문자열 나누기 문제 내 정답 코드import Foundationfunc solution(_ s:String) -> Int { var resultCount = 0 var x:Character? = nil var xCount = 0 var difCount = 0 for chr in s { if x == nil { x = chr xCount += 1 continue } if chr == x { xCount += 1 } else { difCount += 1 } if xCount == difCount { ..
[lv1] 기사단원의 무기 문제 내 정답 코드import Foundationfunc solution(_ number:Int, _ limit:Int, _ power:Int) -> Int { var divisors:[Int] = [] (1...number).map { if calDivisorCount(num: $0) > limit { divisors.append(power) } else { divisors.append(calDivisorCount(num: $0)) } } return divisors.reduce(0, +)}func calDivisorCount(num: Int) -> Int { var count = 0 ..
[lv1] 가장 가까운 같은 글자 문제 내 정답 코드import Foundationfunc solution(_ s:String) -> [Int] { var dic:[String:Int] = [:] var result:[Int] = [] s.enumerated().map { if dic[String($0.element)] == nil { dic[String($0.element)] = $0.offset result.append(-1) } else { let temp = $0.offset - dic[String($0.element)]! result.append(temp) dic[String($0.e..