본문 바로가기

프로그래머스 (Swift)

(165)
[lv1]2016년 문제 내 정답 코드func solution(_ a:Int, _ b:Int) -> String { let week:[String] = ["THU","FRI","SAT","SUN","MON","TUE","WED"] let monthDay = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] var totalDay = b (0.. #1. 원하는 날짜까지의 모든 날을 더하고, 7의 나머지 값을 통해 요일을 알 수 있다.2. 각 월의 날을 배열로 선언한다.3. 원하는 날의 전 달까지의 날을 모두 더하고 b를 더하여,4. 모든 날을 더한 totalDay를 계산한다.5. 7로 나누고 나머지 값의 인덱스로 요일을 가져와 반환한다.6. 나머지 값..
[lv1] 문자열 다루기 기본 문제 내 정답 코드func solution(_ s:String) -> Bool { if s.count != 4 && s.count != 6 { return false } if let num = Int(s) { return true } return false} #1. 요구 사항에 맞게, 문자열의 길이가 4나 6이 아니라면 false를 반환2. 바인딩을 이용하여 정수형으로 정상적으로 변환되면 true를 반환3. 아니라면 false를 반환배운 기술
[lv1] 수박수박수 전 문제는 갱장히 어려웠는데.. 같은 1레벨이 맞는지🤣 문제 내 정답 코드func solution(_ n:Int) -> String { var result = "" (0.. #1. n만큼 반복문을 돌리고,2. 인덱스를 짝/홀로 구분하여3. "수"와 "박을" 추가하여 반환한다.배운 기술
[lv1] [1차] 다트 게임 문제 내 정답 코드import Foundation// 기회 구조체 생성struct Chance { let score: Int // 점수 let bonus: String // 제곱 보너스 var bonusScore: Int { // 보너스에 따른 제곱근 if bonus == "S" { return 1 } else if bonus == "D" { return 2 } else { return 3 } } let option: String? // 스타상, 아차상}func solution(_ dartResult:String) -> Int { var dartResult = da..
[lv1] 이상한 문자 만들기 문제 내 정답 코드func solution(_ s:String) -> String { var s = s.map { String($0) } var index = 0 for i in 0.. #1. s라는 문자열을 문자열 배열로 변환한다.2. index = 0 을 만들고, s배열로 반복문을 돌린다.3. 공백을 발견하면 index를 0으로 초기화 하고,4. 공백이 아니라면 isMultiple을 통해 짝수, 홀수를 판단하고,5. 짝수인 문자는 대문자로, 홀수인 문자는 소문자로 바꿔준다.6. index의 +1을 해준다.7. 변환된 문자열 배열을 joined로 반환한다.배운 기술
[lv1] K번째 수 문제 내 정답 코드import Foundationfunc solution(_ array:[Int], _ commands:[[Int]]) -> [Int] { var result:[Int] = [] // commands 반복문 for command in commands { let (i, j, k) = (command[0], command[1], command[2]) var newArr:[Int] = Array(array[i-1...j-1]) newArr.sort() result.append(newArr[k-1]) } return result} #1. commands로 반복문을 돌리고, 각 comman..
제일 작은 수 제거하기 문제 내 정답 코드func solution(_ arr:[Int]) -> [Int] { let minValue = arr.min() let arr = arr.filter { $0 != minValue } return arr.isEmpty ? [-1] : arr} #1. min()을 통해 배열의 가장 작은 수를 저장해 놓는다. (minValue자리에 넣으면 항상 찾기 때문에 비효율적)2. filter를 통해 minValue를 제외한 배열을 계산한다.3. 배열이 비어있으면 [-1]를 반환한다.배운 기술
[lv1] 문자열 내 마음대로 정렬하기 문제 내 정답 코드func solution(_ strings:[String], _ n:Int) -> [String] { var strings = strings strings.sort(by: { let firstIndex = $0.index($0.startIndex, offsetBy: n) let secondIndex = $1.index($1.startIndex, offsetBy: n) if $0[firstIndex] == $1[secondIndex] { return $0  #1. sort의 클로저를 구성하여 해결한다.2. n만큼의 문자의 인덱스를 계산한다.3. 해당 인덱스의 문자를 가져온다. ($0과 $1)4...
[lv1] 최대공약수와 최소공배수 문제 내 정답 코드func solution(_ n:Int, _ m:Int) -> [Int] { return [calDivisor(n, m), calMultiple(n, m)]}// 최소공배수 구하기 함수// 1부터 작은수까지 반복문 돌리고, 각 수의 배수를 배열에 담기// 배열에 같은 수가 있는 즉시 반환func calMultiple(_ a: Int, _ b: Int) -> Int { var aNums:[Int] = [] var bNums:[Int] = [] let maxNum = a > b ? a : b for i in 1...maxNum { aNums.append(a * i) bNums.append(b * i) fo..
[lv1] 직사각형 별찍기 문제 내 정답 코드import Foundationlet n = readLine()!.components(separatedBy: [" "]).map { Int($0)! }let (a, b) = (n[0], n[1])(0.. #1. map 을 두번 사용해서 가로 세로를 print했다.2. print 파라미터중 terminator를 ""로 바꾸어 줄바꿈 처리되지 않게 하였고,3. 가로 1줄을 그렸으면 print("")를 통해 한 번의 줄바꿈이 처리되게 하였다.배운 기술