Algorithm

Algorithm/프로그래머스

[프로그래머스 스위프트] 문자열을 정수로 바꾸기

아이디어 옵셔널이 붙으므로 강제 언래핑을 통해 Int로 바꿔준다. 해답 func solution(_ s:String) -> Int { return Int(s)! }

Algorithm/프로그래머스

[프로그래머스 스위프트] 약수의 합

아이디어 n이 0이나 음수면 0을 리턴하고 나머지 경우에는 for문을 이용해 약수를 판별하여 더하고 리턴한다. 해답 func solution(_ n:Int) -> Int { var result: Int = 0 if n

Algorithm/프로그래머스

[프로그래머스 스위프트] 이상한 문자 만들기

아이디어 1. s를 띄어쓰기를 기준으로 분리해서 배열로 만든다. 2. 배열을 for문으로 요소를 가져와 현재 문자가 짝수번인지 홀수번인지를 판단한 후 대문자를 만들거나 소문자를 만든다. 3. 생성된 단어들을 조인하고 리턴 해답 import Foundation func solution(_ s:String) -> String { var result: [String] = [] var words = s.components(separatedBy: " ").map { String( $0 )} for word in words { var tmpWord: [String] = [] for (i, v) in word.enumerated() { if i % 2 == 0 { tmpWord.append(String(v).uppe..

Algorithm/프로그래머스

[프로그래머스 스위프트] 자릿수 더하기

아이디어 map을 이용하여 각 자리수를 배열로 만들고 해당 배열의 모든 요소를 합한 후 리턴한다. 풀이는 for문으로 했지만 reduce로 해도 되겠다. 해답 import Foundation func solution(_ n:Int) -> Int { var answer: Int = 0 let arr = String(n).map { Int(String($0))! } for num in arr { answer += num } return answer }

Algorithm/프로그래머스

[프로그래머스 스위프트] 자연수 뒤집어 배열로 만들기

아이디어 reverse 함수를 이용하면 더 쉽게 풀수 있었던 문제였다. arr의 요소 수만큼 for문으로 돌려 가장 뒤에 있는 요소를 빼고 tmp에 넣는 방법을 사용하였다. 해답 func solution(_ n:Int64) -> [Int] { var result: [Int] = [] var arr = Array(String(n)) for _ in 0 ..< arr.count { let tmp = Int(String(arr.removeLast()))! result.append(tmp) } return result }

Algorithm/프로그래머스

[프로그래머스 스위프트] 정수 내림차순으로 배치하기

아이디어 정렬을 위하여 String을 Array로 만들고 sorted()를 통하여 내림차순으로 정렬하였다. 해답 func solution(_ n:Int64) -> Int64 { let arr = Array(String(n)) return Int64(String(arr.sorted(by: > )))! }

Algorithm/프로그래머스

[프로그래머스 스위프트] 정수 제곱근 판별

아이디어 제곱근인지 판단한다. 이 문제를 해결하기 위하여 for문에서 i를 증가시켜가면서 제곱근이 가능한 지점인지 측정하고 만약 i의 제곱이 n보다 크다면 바로 -1을 리턴하게 됐다. 알아뒀어야 했던 점은 스위프트에는 이미 sqrt함수가 구현되어 있어 이렇게 풀 필요가 없었던 것이었다. 이 함수의 존재로 제곱근을 바로 구하고 이 수가 n과 일치하는지를 봤으면 더 쉽게 풀수 있었다. 해답 func solution(_ n:Int64) -> Int64 { var i = 1 while true { if i * i == n { return Int64((i + 1) * (i + 1)) } else if i * i > n { return -1 } i += 1 } }

Algorithm/프로그래머스

[프로그래머스 스위프트] 제일 작은 수 제거하기

문제 요약 조건으로 판단했을 때, 아무것도 없거나 하나만 있는 경우 -1의 배열을 리턴하게 됐다. 다음으로는 매개변수인 arr은 let이므로 이를 활용하기 위해 임시 배열을 만들어 여기서 가장 작은 수를 min()으로 찾아 제거하고 리턴한다. 해답 func solution(_ arr:[Int]) -> [Int] { var tmpArr = arr if arr.count

Algorithm/프로그래머스

[프로그래머스 스위프트] 짝수와 홀수

문제 요약 단순한 if else 문제인데 문제는 나머지가 1일 경우로 계산하면 테스트 케이스에서 실패하는 경우가 있다. 문제의 조건을 보면 Int의 범위라 음수 또한 연산하는 것으로 추정되는데 -1은 홀수지만 1로 조건을 걸어버리면 Even이 나오게 될 것이다. 때문에 0으로 계산하는 게 더 많은 케이스를 걸러낼 수 있다. 해답 func solution(_ num:Int) -> String { if num % 2 == 0 { return "Even" } else { return "Odd" } }

Algorithm/프로그래머스

[프로그래머스 스위프트] 최대공약수와 최소공배수

문제 요약 사실 이 문제의 경우 최대 공약수를 연산하는 공식이 기억이 안 나서 구글링을 통해 풀었다. 최상단의 gcd 함수가 그것인데 재귀를 통해 공약수를 연산하는 구조이다. 최대 공약수를 계산해낸다면 주어진 두 수, n과 m을 곱하고 이를 최대 공약수로 나눠서 최소 공배수를 도출한다. 잊고 있었던 옛 수학에 대한 지식 문제였다. 해답 func gcd(_ a:Int, _ b:Int) -> Int { if b == 0 { return a } else { return gcd(b, a%b) } } func solution(_ n:Int, _ m:Int) -> [Int] { var result:[Int] = [] var a = n var b = m let gcdValue = gcd(a,b) result.appe..

devKen
'Algorithm' 카테고리의 글 목록 (3 Page)