반응형
1. 두 수의 나눗셈
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
제한사항
- 0 < num1 ≤ 100
- 0 < num2 ≤ 100
입출력 예
num1 | num2 | result |
3 | 2 | 1500 |
7 | 3 | 2333 |
1 | 16 | 62 |
입출력 예 설명
입출력 예 #1
- num1이 3, num2가 2이므로 3 / 2 = 1.5에 1,000을 곱하면 1500이 됩니다.
입출력 예 #2
- num1이 7, num2가 3이므로 7 / 3 = 2.33333...에 1,000을 곱하면 2333.3333.... 이 되며, 정수 부분은 2333입니다.
입출력 예 #3
- num1이 1, num2가 16이므로 1 / 16 = 0.0625에 1,000을 곱하면 62.5가 되며, 정수 부분은 62입니다.
제출 답안
import Foundation
func solution(_ num1: Int, _ num2: Int) -> Int {
var result: Double = 0
result = Double(num1) / Double(num2)
return Int(result * 1000)
}
2. 숫자 비교하기
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ num1 ≤ 10,000
- 0 ≤ num2 ≤ 10,000
입출력 예
num1 | num2 | result |
2 | 3 | -1 |
11 | 11 | 1 |
7 | 99 | -1 |
입출력 예 설명
입출력 예 설명 #1
- num1이 2이고 num2가 3이므로 다릅니다. 따라서 -1을 return합니다.
입출력 예 설명 #2
- num1이 11이고 num2가 11이므로 같습니다. 따라서 1을 return합니다.
입출력 예 설명 #3
- num1이 7이고 num2가 99이므로 다릅니다. 따라서 -1을 return합니다.
제출 답안
import Foundation
func solution(_ num1:Int, _ num2:Int) -> Int {
return num1 == num2 ? 1 : -1
}
3. 분수의 덧셈
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <numer1, denom1, numer2, denom2 < 1,000
입출력 예
numer1 | denom1 | numer2 | denom2 | result |
1 | 2 | 3 | 4 | [5, 4] |
9 | 2 | 1 | 3 | [29, 6] |
입출력 예 설명
입출력 예 #1
- 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
입출력 예 #2
- 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
제출 답안
import Foundation
func solution(_ numer1: Int, _ denom1: Int, _ numer2: Int, _ denom2: Int) -> [Int] {
// 두 분수의 합의 분자와 분모를 계산
// 두 분수를 통분하여 분자와 분모 계산
// 분자 = (첫 번째 분수의 분자 * 두 번째 분수의 분모) + (두 번째 분수의 분자 * 첫 번째 분수의 분모)
let numerator = numer1 * denom2 + numer2 * denom1
// 분모 = 두 분수의 분모끼리 곱함
let denominator = denom1 * denom2
// 최대공약수를 구하는 함수 정의
// 유클리드 호제법을 이용하여 두 수의 최대공약수를 구함
// a와 b의 최대공약수를 구하는 방법
// gcd(a, b) = gcd(b, a % b), b가 0이 되면 a가 최대공약수
func gcd(_ a: Int, _ b: Int) -> Int {
return b == 0 ? a : gcd(b, a % b)
}
// 분자와 분모를 최대공약수로 나눠 기약 분수로 변환
// 분자와 분모의 최대공약수 계산
let greatestCommonDivisor = gcd(numerator, denominator)
// 기약 분수의 분자 = 분자를 최대공약수로 나눈 값
let reducedNumerator = numerator / greatestCommonDivisor
// 기약 분수의 분모 = 분모를 최대공약수로 나눈 값
let reducedDenominator = denominator / greatestCommonDivisor
// 결과를 배열로 반환
// 결과는 [기약 분수의 분자, 기약 분수의 분모] 형태
return [reducedNumerator, reducedDenominator]
}
4. 배열 두 배 만들기
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- -10,000 ≤ numbers의 원소 ≤ 10,000
- 1 ≤ numbers의 길이 ≤ 1,000
입출력 예
numbers | result |
[1, 2, 3, 4, 5] | [2, 4, 6, 8, 10] |
[1, 2, 100, -99, 1, 2, 3] | [2, 4, 200, -198, 2, 4, 6] |
입출력 예 설명
입출력 예 #1
- [1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.
입출력 예 #2
- [1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.
제출 답안
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
let result = numbers.map { $0 * 2 }
return result
}
반응형
'프로그래머스 입문문제' 카테고리의 다른 글
[프로그래머스 입문문제] Day 8 배열, 구현, 수학 (0) | 2025.01.21 |
---|---|
[프로그래머스 입문문제] Day 6 문자열, 반복문, 출력, 배열, 조건문 (0) | 2025.01.16 |
[프로그래머스 입문문제] Day 5 수학, 배열 (0) | 2025.01.15 |
[프로그래머스 입문문제] Day 3 사칙연산, 배열, 수학 (0) | 2025.01.13 |
[프로그래머스 입문문제] Day 1 사칙연산 (0) | 2025.01.09 |