적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

Algorithm/Programmers 61

[Swift 알고리즘] Programmers 약수의 합

문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예시 print(solution(12)) //28 print(solution(5)) //6 내 답안 func solution(_ n:Int) -> Int { if n == 0 { return 0 } let arr = Array(1...n).filter{n % $0 == 0} var result = 0 for i in arr { result += i } return result } 모범답안 func solution(_ n:Int) -> Int { return n != 0 ? (1...n).filter{n % $0 == 0}.reduce(0,+..

[Swift 알고리즘] Programmers 소수 찾기

Level 1 연습문제 소수 찾기 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.(1은 소수가 아닙니다.) 제한 조건 - n은 2이상 1000000이하의 자연수입니다. 입출력 예 print(solution(10)) //4 print(solution(5)) //3 1차 시도 - 43.8점 func solution(_ n:Int) -> Int { var result = 0 for i in 2...n { if (2...i).filter{ i%$0 == 0 }.count == 1 { result += 1 } } return result } 정말 원시적인 방법으로 그냥 단순하게 2부터 n까지 ..

[Swift 알고리즘] Programmers 약수의 합

Level 1 연습문제 약수의 합 문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예시 print(solution(12)) //28 print(solution(5)) //6 내 답안 func solution(_ n:Int) -> Int { if n == 0 { return 0 } let arr = Array(1...n).filter{n % $0 == 0} var result = 0 for i in arr { result += i } return result } 모범답안 func solution(_ n:Int) -> Int { return n != 0 ? (1...n).filter{n % ..

[Swift 알고리즘] Programmers 로또의 최고 순위와 최저 순위

Level 1 2021 Dev-Matching 로또의 최고 순위와 최저 순위 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 입출력 예시 print(solution([44,1,0,0,31,25],[31,10,45,1,6,19])) //[3,5] print(solution([0,0,0,0,0,0],[38,19,20,40,15,25])) //[1,6] print(solution([45, 4, 35, 20, 3, 9],[20, 9, 3, 45, 4, 35])) //[1,1] 모범 답안 import Foundation func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] { let zeroCount = lottos.filter { ..

[Swift 알고리즘] Programmers 자릿수 더하기

Level 1 연습문제 자릿수 더하기 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한 사항 - N의 범위 : 100,000,000 이하의 자연수 입출력 예시 print(solution(987)) //24 내답안 import Foundation func solution(_ n:Int) -> Int { var answer:Int = 0 let arr = String(n).map { Int(String($0))! } for i in 0...arr.count-1 { answer += arr[i] } return answer } 굳이 map으로 배열을 만들..

[Swift 알고리즘] Programmers 정수/문자열 내림차순으로 배치하기

Level 1 연습문제 정수 내림차순으로 배치하기 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 - n은 1이상 8000000000 이하인 자연수입니다. 입출력 예시 print(solution(118372)) //873211 내 답안 func solution(_ n:Int64) -> Int64 { let arr = String(n).map{ String($0) } return Int64(String(arr.sorted().joined().reversed()))! } 모범답안 func solution(_ n:Int64) -> Int64 {..

[Swift 알고리즘] Programmers 자연수 뒤집어 배열로 만들기

문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 - n은 10,000,000,000이하인 자연수입니다. 입출력 예시 print(solution(12345)) //[5,4,3,2,1] 내답안 func solution(_ n:Int64) -> [Int] { return String(n).reversed().map {Int(String($0))!} } 풀이 👉🏻 reversed() 사용법 처음으로 쓴 코드 func solution(_ n:Int64) -> [Int] { let s = String(n) var result = [Int]() for i in 0...s.count-1 { result.a..

[Swift 알고리즘] Programmers 나누어 떨어지는 숫자 배열

문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 - arr은 자연수를 담은 배열입니다. - 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. - divisor는 자연수입니다. - array는 길이 1 이상인 배열입니다. 입출력 예시 print(solution([5,9,7,10], 5)) //[5,10] print(solution([2,36,1,3], 1)) //[1,2,3,36] print(solution([3,2,6],10)) //[-1] 내답안 func solution..

[Swift 알고리즘] Programmers 최대공약수와 최소공배수

Level 1 최대공약수와 최소공배수 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 - 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예시 print(solution(2,5)) //[1,10] print(solution(3,12)) //[3,12] print(solution(10,15)) //[5,30] 내 답안 func solution(_ n:Int, _ m:Int) -> [Int] { var result = [..

[Swift 알고리즘] Programmers 정수 제곱근 판별

Level 1 연습문제 정수 제곱근 판별 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 - n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예시 print(solution(121)) //144 print(solution(3)) //-1 내답안 func solution(_ n:Int64) -> Int64 { for i in 1...n { if i*i == n { return (i+1)*(i+1) } if n < i*i { return -1 } } return 0 } i 가 n까지 갈 일은..

728x90
반응형