Winnie The Pooh Bear 코딩테스트 연습_사칙연산, 조건문, 배열

코딩테스트

코딩테스트 연습_사칙연산, 조건문, 배열

코딩은 처음이라 2023. 5. 17. 23:46

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
반응형

코딩테스트 연습_사칙연산, 조건문, 배열

 

 

 

 

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

입출력 예 설명

  • num1이 3, num2가 2이므로 3 / 2 = 1.5에 1,000을 곱하면 1500이 됩니다.
  • num1이 7, num2가 3이므로 7 / 3 = 2.33333...에 1,000을 곱하면 2333.3333.... 이 되며, 정수 부분은 2333입니다.
  • num1이 1, num2가 16이므로 1 / 16 = 0.0625에 1,000을 곱하면 62.5가 되며, 정수 부분은 62입니다.

풀이

function solution(num1, num2) {
    var answer = Math.floor((num1/num2)*1000);
    return answer;
}

*Math.floor()

소수점 이하를 버리고 정수만 남기는 함수

 

 

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

입출력 예 설명

  • num1이 2이고 num2가 3이므로 다릅니다. 따라서 -1을 return합니다.
  • num1이 11이고 num2가 11이므로 같습니다. 따라서 1을 return합니다.
  • num1이 7이고 num2가 99이므로 다릅니다. 따라서 -1을 return합니다.

풀이

function solution(num1, num2) {
    if(num1 == num2){
        return 1
    } else {
        return -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 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
  • 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.

풀이

function solution(numer1, denom1, numer2, denom2) {
    var sumNumer = numer1* denom2 + numer2 * denom1;
    var sumDenom = denom1 * denom2;
    var gcd = greatestCommonDivisor(sumNumer, sumDenom)
    var answer = [sumNumer/gcd, sumDenom/gcd];
    return answer;
}
function greatestCommonDivisor(a,b){
    if(b==0){
        return a;
    }
    return greatestCommonDivisor(b, a%b);
}

greatestCommonDivisor() 최대공약수를 구하는 함수

유클리드 호제법을 사용해 재귀적으로 계산

 

 

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, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.
  • [1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.

풀이

function solution(numbers) {
    var answer = numbers.map(function(number){
        return number * 2;
    });
    return answer;
}

*map() 배열의 각 요소에 대해 주어진 콜백 함수를 실행하여 새로운 배열을 생성하는 배열 메소드이다

원본 배열의 요소를 변형하여 새로운 배열을 만들 때 사용된다.

 

출처

 

반응형