- 두 수의 나눗셈
- 숫자 비교하기
- 분수의 덧셈
- 배열 두 배 만들기
<두 수의 나눗셈>
문제 설명
정수 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입니다.
나의 풀이
function solution(num1, num2) {
let answer = parseInt(num1/num2 * 1000);
return answer;
}
풀이 설명
- 변수
answer를 선언하고, 그 안에num1을num2로 나눈 값에 1000을 곱한 후 parseInt를 이용하여 정수만을 취해 저장한다. answer를 반환한다.
<숫자 비교하기>
문제 설명
정수 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합니다.
나의 풀이
function solution(num1, num2) {
let answer;
if(num1 == num2){
answer = 1;
}
else {
answer = -1;
}
return answer;
}
풀이 설명
- 두 수가 같으면 1, 다르면 -1을 저장할 변수
answer를 선언한다. - if 문을 이용해
num1과num2가 같을 경우answer에 1을, 그렇지 않을 경우answer에 -1을 저장하도록 한다. answer를 반환한다.
<분수의 덧셈>
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
0 <denum1, num1, denum2, num2 < 1,000
입출력 예
| denum1 | num1 | denum2 | num2 | 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 합니다.
나의 풀이
function solution(denum1, num1, denum2, num2) {
let numerator = denum1 * num2 + denum2 * num1; // 두 수를 더한 분수의 분자
let denominator = num1 * num2; // 두 수를 더한 분수의 분모
let GCD = 1; // 분자와 분모의 최대공약수를 저장하는 변수(초기값은 1로 선언, 서로소일 경우 최대공약수는 1)
for (let i = 2; i <= denominator; i++){
if (((numerator % i) == 0) && ((denominator % i) == 0)){
GCD = i; // 최대공약수 저장
}
}
let resultNumerator = numerator/GCD; // 분자를 최대공약수로 나눈 결과.
let resultDenominator = denominator/GCD; // 분모를 최대공약수로 나눈 결과
let answer = [resultNumerator, resultDenominator];
return answer;
}
풀이 설명
- 변수
numerator를 선언하고, 두 분수를 더한 분수의 분자를 계산하여 저장한다. - 변수
denominator를 선언하고, 두 분수를 더한 분수의 분모를 계산하여 저장한다. - 최대 공약수를 저장할 변수
GCD를 선언하고 초기값을 1로 지정한다.
(분자와 분모를 약분할 때 두 수가 서로소일 경우 최대공약수는 1이기 때문이다.) - for 문을 이용해 2부터 분모 값을 나타내는
denominator에 저장된 값까지 순차적으로 분자와 분모를 각각 나눠보고 둘 다 나누어떨어지는 숫자가 나올 때마다 if 문을 이용해GCD에 저장되게 한다. - for 문이 끝나면
GCD에는 분자와 분모 둘 다 나누어 떨어지게 만든 가장 마지막 수가 저장되고, 이는 곧 분자와 분모의 최대 공약수가 된다. - 변수
resultNumerator에numerator를GCD로 나누어 약분 후의 분자를 저장한다. - 변수
resultDenominator에denominator를GCD로 나누어 약분 후의 분모를 저장한다. - 배열
answer를 선언하고, 그 안에 약분된 분자와 분모가 저장된 변수인resultNumerator와resultDenominator를 차례로 저장한다. answer를 반환한다.
<배열 두배 만들기>
문제 설명
정수 배열 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합니다.
나의 풀이
function solution(numbers) {
for (let i = 0; i < numbers.length; i++){
numbers[i] *= 2;
}
return numbers;
}
풀이 설명
- for 문을 이용해 배열의 길이만큼 배열의 처음부터 끝까지 각 원소에 순차적으로 2를 곱하고, 그 값을 다시 배열에 저장한다.
- 각 원소가 두 배가 된 배열
numbers를 반환한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [코딩테스트 입문] Day 11 팩토리얼 (JavaScript) (0) | 2023.01.11 |
|---|---|
| [코딩테스트 입문] Day 10 배열 회전시키기 (JavaScript) (0) | 2023.01.04 |
| [코딩테스트 입문] Day 07 특정 문자 제거하기 (JavaScript) (0) | 2023.01.03 |
| [코딩테스트 입문] Day 03 최빈값 구하기 (JavaScript) (0) | 2022.12.25 |
| [코딩테스트 입문] Day 01 사칙연산 (JavaScript) (0) | 2022.12.22 |