본문 바로가기
codingtest

[programmers] 양꼬치, 각도기, 특정 문자 제거하기, 문자 반복 출력하기, 짝수 홀수 개수

by 안자두 2023. 3. 18.

📝 [Lv0] 양꼬치

👀 문제 설명

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

 

🚨 제한 사항

  • 0 < n < 1,000
  • n / 10 ≤ k < 1,000
  • 서비스로 받은 음료수는 모두 마십니다.

 

💻 입출력 예

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

 

✨ 풀이 설명

마신 음료수의 개수에서 서비스로 받은 개수(즉, 양꼬치 개수를 10으로 나눴을 때의 몫)를 빼준 후, 나머지 금액을 계산해 주었다. 간단하게 Math.floor()를 사용해 서비스의 개수를 구해줄 수 있었다.

 

🕵️‍♂️ 코드

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

 


📝 [Lv0] 각도기

👀 문제 설명

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180

 

🚨 제한 사항

  • 0 < angle ≤ 180
  • angle은 정수입니다.

 

💻 입출력 예

angle result
70 1
91 3
180 4

 

✨ 풀이 설명

삼항 연산자를 사용해 풀이해 주었다.
우선, angle이 90이 넘는다면 둔각 또는 평각이다. 이를 이용해 만약 angle이 180이라는 평각을 가리키는 4를 반환, 그렇지 않다면 둔각을 의미하는 3을 반환해 주었다.
그리고 angle이 90 이하라면, 예각 또는 직각이라는 의미로, 같은 방법으로 angle이 90이라면, 직각을 의미하는 2를, 아니라면 예각을 의미하는 1을 반환해 주었다.

 

🕵️‍♂️ 코드

function solution(angle) {
  return angle > 90 ?
    angle === 180 ? 4 : 3
    :
    angle === 90 ? 2 : 1;
}

 


📝 [Lv0] 특정 문자 제거하기

👀 문제 설명

문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

🚨 제한 사항

  • 1 ≤ my_string의 길이 ≤ 100
  • letter은 길이가 1인 영문자입니다.
  • my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
  • 대문자와 소문자를 구분합니다.

 

💻 입출력 예

my_string letter result
"abcdef" "f" "abcde"
"BCBdbe" "B" "Cdbe"

 

✨ 풀이 설명

filter()를 사용할까, 정규식을 사용할까 고민하다가 letter가 한 글자라고 하여 그냥 간단히 filter()를 사용해 주었다.
my_string을 배열화한 다음, filter()를 사용해 각 문자가 letter가 아닐 경우에만 반환해 주었다.
그다음, 새로 만들어진 배열을 join()으로 연결해 문자열로 만들어주어 반환해 주었다.

 

🕵️‍♂️ 코드

function solution(my_string, letter) {
  return [...my_string].filter(str => letter !== str).join('');
}

 


📝 [Lv0] 문자 반복 출력하기

👀 문제 설명

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

 

🚨 제한 사항

  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.

 

💻 입출력 예

my_string n result
"hello" 3 "hhheeellllllooo"

 

✨ 풀이 설명

배열로 변환한 문자열을 map()으로 각 문자를 반복해 주었다. 각 문자는 repeat()을 사용해 n번씩 반복하여 생성된 문자열을 반환해 주었고, 반복된 문자열들이 담긴 배열을 다시 join()으로 문자열로 만들어 반환해 주었다.

 

🕵️‍♂️ 코드

function solution(my_string, n) {
  return [...my_string].map(str => str.repeat(n)).join('');
}

 


📝 [Lv0] 짝수 홀수 개수

👀 문제 설명

정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

🚨 제한 사항

  • 1 ≤ num_list의 길이 ≤ 100
  • 0 ≤ num_list의 원소 ≤ 1,000

 

💻 입출력 예

num_list result
[1, 2, 3, 4, 5] [2, 3]
[1, 3, 5, 7] [0, 4]

 

✨ 풀이 설명

reduce()를 활용해 보았다. 우선, 초깃값으로 짝수와 홀수를 담을 배열을 초기화해 주었다. 그다음 반복문을 돌면서, 각 숫자를 2로 나눈 나머지 즉, 수가 짝수일 때에는 0번째 인덱스의 값을, 홀수일 때에는 1번째 인덱스의 값을 1 증가해 주었다.
그렇게 되면, 0번째 인덱스의 값은 짝수의 개수가 될 것이고, 1번째 인덱스의 값은 홀수의 개수가 반환될 것이다.

 

🕵️‍♂️ 코드

function solution(num_list) {
  return num_list.reduce((answer, num) => {
    answer[num % 2]++;
    return answer;
  }, [0, 0]);
}

 

728x90