공부/코딩테스트

코딩테스트 4

뀨뿌뀨뿌 2023. 5. 26. 12:19

Q.  두 수의 합

정수 num1과 num2가 주어질 때,  num1과 num2의 합을 return 하도록 soltuion 함수를 완성해 주세요.

🚫제한 사항
-50,000 ≤ num1 ≤ 50,000
-50,000 ≤ num2 ≤ 50,000

❗입출력 예

num1 num2 result
2 3 5
100 2 102

😀 내가 푼 답

function solution(num1, num2) {
    return num1 + num2;
}
  • num1과 num2의 두수의 합를 구하기 때문에 더하기 연산자를 사용

😊 문제풀이 답안 OR 다른사람들 답안

const solution = (num1, num2) => num1 + num2

Q.  두 수의 차

정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.

🚫제한 사항
-50,000 ≤ num1 ≤ 50,000
-50,000 ≤ num2 ≤ 50,000

❗입출력 예

num1 num2 result
2 3 -1
100 2 98

😀 내가 푼 답

function solution(num1, num2) {
  return num1 - num2;
}
  • num1과 num2의 두수의 차를 구하기 때문에 빼기 연산자를 사용

😊 문제풀이 답안 OR 다른사람들 답안

const solution = (num1, num2) => num1 - num2

Q. 두 수의 곱

정수 num1num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.

🚫제한 사항
0 ≤ num1 ≤ 100
0≤ num2 ≤ 100

❗입출력 예

num1 num2 result
3 4 12
27 19 513

😀 내가 푼 답

function solution(num1, num2) {
  return num1 <= 100 && num2 <= 100 ? num1 * num2 : 0;
}

// 제한사항까지 표현해보고 싶어서 작성한 코드
  • 문제에 나온데로 풀면 num1 * num2로 해결되지만 제한사항을 넣어서 문제를 풀어봄
  • 제한사항이 num1, num2가 모두 100보다 작거나 같으므로 &&(and연산자)를 이용하여 두가지를 모두 충족시킬 수 있는 조건식을 작성

😊 문제풀이 답안 OR 다른사람들 답안

const solution = (num1, num2) => num1 * num2

Q.  몫 구하기

정수 num1num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

🚫제한 사항
0 ≤ num1 ≤ 100
0 ≤ num2 ≤ 100

❗입출력 예

num1 num2 result
10 5 2
7 2 3

😀 내가 푼 답

function solution(num1, num2) {
    const result = Math.floor(num1 / num2)
    return result;
}
  • Math 객체
    • 수학 상수와 함수를 위한 프로퍼티, 메소드를 미리 구현해 놓은 빌트인 객체
    • 생성자(constructor)가 존재하지 않음
      => 인스턴스를 생성할 필요 없이 바로 사용 가능
    • Math.PI
      - 원의 둘레와 지름의 비율을 가짐
      => PI값(π = 3.141592653589793)를 반환함
    • 자주사용하는 메소드
      Math.random()
      - 임의의 부동 소수점을 리턴(여기서 리턴된 부동 소수점은 0부터 1미만)
      - 0보다 크거나 같고, 1보다 작은 무작위 숫자(random number)를 리턴함
       Math.abs()
      - 전달 받은 인수의 절대값(absolute value)을 리턴함
      - 절대값은 반드시 0 또는 양수이어야 함
      - 빈문자열, 빈배열 null 은 0을 반환하고 undefined, 빈객체, 문자열은 NaN을 리턴함
      Math.min()
      - 리턴받은 값 중에서 가장 작은 수를 리턴함
      - 인수가 없을 경우는 infinity를 리턴하고, 비교 불가능한 값이 있는 경우는 NaN을 리턴함
      Math.max()
      - 전달받은 값 중에서 가장 큰 수를 반환함/
      - 인수가 없을 경우는 infinity를 리턴하고, 비교 불가능한 값이 있는 경우는 NaN을 리턴함
      ✔ Math.round()
      - 전달받은 값을 소수점 첫 번째 자리에서 반올림하여 숫자로 리턴함
      ✔ Math.floor()
      - 전달받은 값과 같거나 작은 수 중 가장 큰 정수를 리턴함
      - 소수점 이하를 내림한 정수를 반올림하기 때문에 Math.ceil()와 반대 개념
      - 양수인 경우, 소수점 이하를 떼어 버린 다음 정수를 리턴
      - 음수인 경우, 소수점 이하를 떼어버린 다음 -1을 한 정수를 리턴
      ✔ Math.ceil()
      - 전달받은 값의 소수점 이하를 올림한 정수를 리턴함

      ✔ Math.sqrt
      - 인수의 제곱근을 리턴함

😊 문제풀이 답안 OR 다른사람들 답안

// 1.
function solution(num1, num2) {
    return ~~(num1/num2);    // ~~ 틸트 연산자
}

// 2.
function solution(num1, num2) {
    return Math.trunc(num1 / num2);
}
  • 틸트 연산자
    • tilde(~) 연산자
      ✔ 비트 연산자롸 NOT의 기능을 한다고 생각하면 됨
    • double tilde(~~)
      tilde를 2번 반복해 주는 것
        숫자에 ~ 연산을 하게되면 소수점들은 버려지게 되는데 ~~를 활용하면 양수에서는 Math.floor()와 같고 음수에서는 Math.ceil()과 같은 결과를 사용할 수 있음

      => 속도 측면에서 ~~가 더 빠름
  • Math.trunc
    • 소수점 뒤에 숫자를 제거하는 메소드
    • 단순히 소수점을 없애는데 사용하는 메소드

Q.  나머지 구하기

정수 num1num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

🚫제한 사항
0 ≤ num1 ≤ 100
0 ≤ num2 ≤ 100

❗입출력 예

num1 num2 result
3 2 1
10 5 0

😀 내가 푼 답

function solution(num1, num2) {
    return num1 % num2
}
  • num1과 num2의 두수의 나머지를 구하기 때문에 나머지 연산자를 사용

😊 문제풀이 답안 OR 다른사람들 답안

const solution = (num1, num2) => num1 % num2

'공부 > 코딩테스트' 카테고리의 다른 글

코딩테스트 6  (0) 2023.05.26
코딩테스트 5  (0) 2023.05.26
코딩테스트3  (0) 2023.05.17
코딩테스트2  (0) 2023.05.15
코딩테스트1  (0) 2023.05.14