공부/코딩테스트

코딩테스트 10

뀨뿌뀨뿌 2023. 5. 31. 20:09

Q.  자릿수 더하기

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

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

❗입출력 예

n result
1234 10
930211 16

😀 내가 푼 답

function solution(n) {
  return n
    .toString()
    .split("")
    .map((idx) => parseInt(idx))
    .reduce((acc, cur) => acc + cur);
}
  • parseInt()
    • 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환함
    • parseInt() 함수를 사용하는 주요 목적은 문자열에서 숫자를 추출하기 위함 => 입력받은 문자열을 숫자값으로 바꾸어 변환함
    • 문자열의 첫글자가 숫자이고, 그 이후에 숫자가 아닌 다른 문자열이 나올 경우, 숫자가 아닌 문자 이후의 값은 무시하고 그 이전의 숫자만 정수로 리턴함
    • 문자열의 첫글자가 숫자가 아니면, NaN을 리턴
    • 문자열에 공백이 입력된면 문자열의 첫 글자가 숫자가 아니므로, NaN을 리턴함
    • 문자열의 첫글자는 반드시 숫자여야 하지만, 처음에 오는 공백 문자는 허용됨
      문자열의 첫글자가 숫자이면, 뒤에 오는 공백은 무시됨
  • Number()
    • 숫자 값으로 작업할 수 있게 해주는 Object 객체. 객체는 생성자를 사용하여 만들고, 원시 숫자 자료형은 함수를 사욯해 생성함.
    • 문자열을 숫자열로 형변환시 일반적인 숫자형태를 가지고 있는 값들은 그대로 출력됨(음수 포함)
      공백일 경우 0으로 출력됨

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

function solution(n) {
  let sum = 0
  let s = n.toString()
  for (i=0; i<s.length; i++){
    sum += Number(s[i])
  } return sum
}

Q. 순서쌍의 개수

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

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

❗입출력 예

n result
20 6
100 9

😀 내가 푼 답

function solution(n) {
  let arr = [];
  for (let i = 0; i <= n; i++) {
    n % i === 0 ? arr.push(i) : 0;
  }
  return arr.length;
}

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

function solution(n) {
    let ans = 0;
    for (let i = 1; i < Math.sqrt(n); i++)
        if (n%i === 0) ans+=2;

    return Number.isInteger(Math.sqrt(n)) ? ans+1 : ans;
}
  • isInteger()
    • Number.isInteger() 메소드는 인수의 값이 정수인지 아닌지를 리턴함
    • 전달된 값이 정수이면 true, 아니라면 NaN, Infinity 와 같은 값들은 모두 false를 리턴함
  • sqrt()
    • Math.sqrt() 메소드는 함수 인자로 값을 넘겨주면 루트 값을 리턴함
    • 매개변수가 음수이면 NaN을 리턴함

Q. 개미 군단

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

🚫제한 사항
hp는 자연수입니다.
0 ≤ hp ≤ 1000

❗입출력 예

hp result
23 5
24 6
999 201

😀 내가 푼 답

function solution(hp) {
  return (
    Math.floor(hp / 5) + Math.floor((hp % 5) / 3) + Math.floor((hp % 5) % 3)
  );
}

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

function solution(hp) {
    let cnt = 0;
    [5,3,1].forEach(v => {
        cnt += Math.floor(hp/v);
        hp = hp % v;
    })
    return cnt;
}

Q. 숨어있는 숫자의 덧셈(1)

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

🚫제한 사항
1 ≤ my_string의 길이 ≤ 1,000
my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

❗입출력 예

my_string result
"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

😀 내가 푼 답

function solution(my_string) {
  let result = 0;
  my_string
    .split("")
    .map((idx) => (!isNaN(idx) ? (result += parseInt(idx)) : 0));
  return result;
}

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

function solution(str) {
    let arr1 = []
    for (i=0; i<str.length; i++) {
        arr1.push(Number(str[i]))
    }
    let arr2 = arr1.filter(Boolean)
    return arr2.reduce((a,b)=>a+b)
}

Q. 문자열 정렬하기 (1)

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

🚫제한 사항
1 ≤ my_string의 길이 ≤ 100
my_string에는 숫자가 한 개 이상 포함되어 있습니다.
my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. 

❗입출력 예

my_string result
"hi12392" [1, 2, 2, 3, 9]
"p2o4i8gj2" [2, 2, 4, 8]
"abcde0" [0]

😀 내가 푼 답

function solution(my_string) {
  let result = 0;
  my_string
    .split("")
    .map((idx) => (!isNaN(idx) ? (result += parseInt(idx)) : 0));
  return result;
}

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

function solution(my_string) {
    var answer = [];
    for (i = 0; i < my_string.length; i++) {
        !isNaN(my_string[i]) ? answer.push(Number(my_string[i])) : 0;
    }
    return (answer.sort((a, b) => a -  b));
}

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

Q. 짝수와 홀수  (0) 2023.06.16
Q. 직사각형 별찍기  (0) 2023.06.16
코딩테스트 9  (0) 2023.05.30
코딩테스트 8  (1) 2023.05.29
코딩테스트 7  (0) 2023.05.29