공부/코딩테스트

코딩테스트 6

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

Q.  양꼬치

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

🚫제한 사항
0 ≤ n ≤ 10,000
n / 10 ≤ k ≤ 10,000
서비스로 받은 음료수는 모두 마십니다.

❗입출력 예

n k result
10 3 124,000
64 6 768,000

😀 내가 푼 답

function solution(n, k) {
    return 12000 * n + 2000 * k - 2000 * Math.floor(n/10)
}

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

function solution(n, k) {
    return n*12000 + k*2000 - parseInt(n/10)*2000
}
  • parseInt()
    • parseInt() 함수는 문자열에서 숫자를 추출하기 위해서 사용
    • 입력받은 문자열을 실제 숫자값으로 바꿔서 리턴함
    • 부동 소수점 값은 무시됨

Q.  피자 나눠 먹기 (1)

머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

🚫제한 사항
1 ≤ n ≤ 100

❗입출력 예

n result
7 1
1 1
15 3

😀 내가 푼 답

function solution(n) {
  return 1 * Math.ceil(n / 7);
}

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

function solution(n) {
    return n % 7 === 0 ? n / 7 : parseInt(n / 7) + 1;
}

function solution(n) {
    return (n%7 === 0) ? Math.floor(n/7) : Math.floor(n/7)+1
}

Q.  피자 나눠 먹기 (3)

머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

🚫제한 사항
2 ≤ slice ≤ 10
1 ≤ n ≤ 100

❗입출력 예

slice n result
7 10 2
4 12 64

😀 내가 푼 답

function solution(slice, n) {
  return Math.ceil(n / slice);
}

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

const solution = (slice, n) => Math.ceil(n / slice)

Q.  점의 위치 구하기

사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.

점의 위치 구하기 문제

  • x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
  • x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
  • x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
  • x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.

x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

🚫제한 사항
dot의 길이 = 2
dot[0] 은 x좌표를, dot[1]은 y좌표를 나타냅니다.
-500 ≤ dot의 원소 ≤ 500
dot의 원소는 0이 아닙니다.

❗입출력 예

dot result
[2, 4] 1
[-7, 9] 2

😀 내가 푼 답

function solution(dot) {
  return dot[0] > 0 && dot[1] > 0
    ? 1
    : dot[0] < 0 && dot[1] > 0
    ? 2
    : dot[0] < 0 && dot[1] < 0
    ? 3 : 4;
}

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

function solution(dot) {
    const [num,num2] = dot;
    const check = num * num2 > 0;
    return num > 0 ? (check ? 1 : 4) : (check ? 3 : 2);
}

Q.  아이스 아메리카노

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

🚫제한 사항
0 ≤ money ≤ 1,000,000

❗입출력 예

money result
5,500 [1, 2]
15,000 [2, 4000]

😀 내가 푼 답

function solution(money) {
  const drink = Math.floor(money / 5500);
  const change = money % 5500;
  return [drink, change];
}

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

function solution(money) {
    return [Math.floor(money / 5500), money % 5500];
}

Q. 옷가게 할인 받기

머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.

🚫제한 사항
10 ≤ price ≤ 1,000,000
     - price는 10원 단위로(1의 자리가 0) 주어집니다.
소수점 이하를 버린 정수를 return합니다.

❗입출력 예

price result
150,000 142,500
580,000 464,000

😀 내가 푼 답

function solution(price) {
    if(price >= 500000) {
        return Math.floor(price * 0.8)
    }else if (price >= 300000 && price < 500000) {
        return Math.floor(price * 0.9)
    } else if (price >= 100000 && price < 300000) {
        return Math.floor(price * 0.95)
    }else {
        return price
    }
}

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

const discounts = [
    [500000, 20],
    [300000, 10],
    [100000,  5],
]

const solution = (price) => {
    for (const discount of discounts)
        if (price >= discount[0])
            return Math.floor(price - price * discount[1] / 100)
    return price
}

Q. 제곱수 판별하기

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

🚫제한 사항
10 ≤ n ≤ 1,000,000

❗입출력 예

n result
144 1
976 2

😀 내가 푼 답

function solution(n) {
    return Math.sqrt(n) % 1 === 0 ? 1 :2
}
  • Math.sqrt()
    • 숫자의 제곱근을 반환함
    • 괄호안에 들어오는 숫자가 음수이면 NaN을 반환함
  • Math.sqrt()를 사용하여 반환된 값이 1로 나눴을 때 나머지가 0이면 제곱수이고, 1로 나눴을때 나머지가 0이 아니면 제곱수가 아님
// ex)
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095

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

function solution(n) {
  return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
  • Number.isInteger()
    • 전달된 값이 정수인지 여부를 확인해줌
    • 주어진 값이 정수이면 true값을 리턴시키고, 정수가 아니면 false값을 리턴

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

코딩테스트 8  (1) 2023.05.29
코딩테스트 7  (0) 2023.05.29
코딩테스트 5  (0) 2023.05.26
코딩테스트 4  (0) 2023.05.26
코딩테스트3  (0) 2023.05.17