프로그래머스 : JavaScript 알고리즘 100일 챌린지 2일차
- 프로그래머스 : https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc
- 유트브 참고 : https://www.youtube.com/watch?v=RMmOU2u-_as&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS
코딩테스트 입문 Day2
1. 두 수의 나눗셈 : 정수 num1과 num2가 매개변수로 주어질 때, num1과 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
function solution(num1, num2) {
var answer = 0;
return answer;
}}
길라잡이
- 변수 answer의 데이터를 수정해서 답을 구해보세요.
- 예시
num1 | num2 | result |
3 | 2 | 1500 |
7 | 3 | 2333 |
1 | 16 | 62 |
답 확인하기
function solution(num1, num2) {
var answer = Math.floor(num1*1000 / num2);
return answer;
}
해설 확인하기
이 함수는 두 개의 숫자 num1과 num2를 입력받아 num1을 num2로 나눈 몫을 계산하고, 소수점 이하 3자리를 버림하여 반환하는 기능을 수행합니다.
함수의 동작을 자세히 설명하겠습니다.
num1을 1000배한 후 num2로 나눈 몫을 계산하여 answer 변수에 저장합니다. Math.floor() 함수는 소수점 이하를 버림하여 정수 부분만 남기는 역할을 수행합니다.
answer 변수를 반환하여 결과를 출력합니다.
결과적으로, 함수는 두 개의 숫자 num1과 num2를 입력받아 num1을 1000배하고 num2로 나눈 몫을 계산한 뒤, 소수점 이하 3자리를 버림하여 반환합니다.
2. 숫자 비교하기 : 정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
function solution(num1, num2) {
var answer = 0;
return answer;
}
길라잡이
- 변수 answer의 데이터를 수정해서 답을 구해보세요.
- 예시
num1 | num2 | result |
2 | 3 | -1 |
11 | 11 | 1 |
7 | 99 | -1 |
답 확인하기
function solution(num1, num2) {
return num1 === num2 ? 1 : -1;
}
해설 확인하기
이 함수는 두 개의 숫자 num1과 num2를 입력받아 비교하여 같으면 1을, 다르면 -1을 반환하는 기능을 수행합니다.
함수의 동작을 자세히 설명하겠습니다.
num1과 num2를 비교하여 동일한지 확인합니다. 비교 연산자 ===는 두 값이 정확하게 일치하는지 확인합니다.
만약 num1과 num2가 같으면 1을 반환합니다.
그렇지 않은 경우, 즉 num1과 num2가 다르면 -1을 반환합니다.
결과적으로, 함수는 두 개의 숫자 num1과 num2를 입력받아 비교하여 같으면 1을, 다르면 -1을 반환합니다.
3. 분수의 덧셈 : 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
function solution(numer1, denom1, numer2, denom2) {
var answer = [];
return answer;
}
길라잡이
- 변수 answer의 데이터를 수정해서 답을 구해보세요.
- 예시
numer1 | denom1 | numer2 | denom2 | result |
1 | 2 | 3 | 4 | [5, 4] |
9 | 2 | 1 | 3 | [29, 6] |
답 확인하기
function solution(numer1, denom1, numer2, denom2) {
var answer = [];
const denom = numer1 * denom2 + numer2 * denom1;
const numer = denom1 * denom2;
let minNumber;
if(denom < numer){
minNumber = denom;
} else {
minNumber = numer;
}
while(true){
if(denom % minNumber === 0){
if(numer % minNumber === 0){
return [denom / minNumber, numer / minNumber];
}
}
minNumber = minNumber - 1;
}
return answer;
}}
해설 확인하기
이 함수는 분수를 더한 결과를 기약분수 형태로 반환하는 기능을 수행합니다. 함수는 numer1과 denom1이라는 첫 번째 분수의 분자와 분모, 그리고 numer2와 denom2라는 두 번째 분수의 분자와 분모를 입력받습니다.
함수의 동작을 자세히 설명하겠습니다.
빈 배열인 answer 변수를 선언합니다. 이 변수는 결과를 저장할 배열입니다.
numer1 * denom2 + numer2 * denom1을 계산하여 분수의 분모를 구합니다. 이 값은 denom 변수에 저장됩니다.
denom1 * denom2를 계산하여 분수의 분자를 구합니다. 이 값은 numer 변수에 저장됩니다.
minNumber 변수를 선언합니다. 이 변수는 분자와 분모 중 작은 값을 저장할 것입니다.
만약 denom이 numer보다 작다면, denom 값을 minNumber에 할당합니다. 그렇지 않으면 numer 값을 minNumber에 할당합니다.
무한 루프를 시작합니다. 이 루프에서는 분자와 분모의 최대공약수를 구하기 위해 minNumber 값을 줄여가며 확인합니다.
만약 denom % minNumber와 numer % minNumber가 모두 0이라면, 즉 minNumber가 denom과 numer의 공약수라면, denom / minNumber와 numer / minNumber를 반환합니다. 이 값은 기약분수 형태입니다.
공약수가 아니라면, minNumber 값을 1씩 감소시켜 다시 확인합니다.
무한 루프가 종료되지 않고 계속 실행되므로, return answer; 문장은 실행되지 않습니다.
결과적으로, 함수는 입력받은 두 분수를 더한 결과를 기약분수 형태로 반환합니다.
4. 배열 두배 만들기 : 정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
function solution(numbers) {
var answer = [];
return answer;
}
길라잡이
- 변수 answer의 데이터를 수정해서 답을 구해보세요.
- 예시
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] |
답 확인하기
function solution(numbers) {
var answer = [];
for (let i = 0; i<numbers.length; i++) {
answer[i] = numbers[i] * 2
}
return answer;
}
해설 확인하기
이 함수는 주어진 배열 numbers의 각 요소를 2배로 만들어 새로운 배열로 반환하는 기능을 수행합니다.
함수의 동작을 자세히 설명하겠습니다.
빈 배열인 answer 변수를 선언합니다. 이 변수는 결과를 저장할 배열입니다.
for 루프를 사용하여 numbers 배열의 각 요소를 반복적으로 접근합니다.
루프의 각 반복에서 numbers[i]를 2배로 만들어 answer[i]에 할당합니다.
모든 반복이 완료되면 answer 배열을 반환하여 결과를 출력합니다.
결과적으로, 함수는 주어진 배열 numbers의 각 요소를 2배로 만들어 새로운 배열로 반환합니다.