코딩테스트 15일차

영어가 싫어요

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.

 

function solution(numbers) {
  const numDict = {
    zero: 0,
    one: 1,
    two: 2,
    three: 3,
    four: 4,
    five: 5,
    six: 6,
    seven: 7,
    eight: 8,
    nine: 9
  };

  let answer = "";
  let currentNumber = "";

  for (let i = 0; i < numbers.length; i++) {
    currentNumber += numbers[i];

    if (numDict.hasOwnProperty(currentNumber)) {
      answer += numDict[currentNumber];
      currentNumber = "";
    }
  }

  return parseInt(answer);
}

인덱스 바꾸기

문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.

function solution(my_string, num1, num2) {
  let arr = my_string.split("");
  [arr[num1], arr[num2]] = [arr[num2], arr[num1]];
  return arr.join("");
}

 먼저 my_string을 문자 단위로 분할하기 위해 split 함수를 사용하여 배열로 변환합니다. 그 후, 비구조화 할당(destructuring assignment)을 사용하여 num1과 num2 인덱스에 해당하는 문자를 교환합니다. 배열 요소를 교환하기 위해 배열 해체 할당을 사용하였습니다. 마지막으로 join 함수를 사용하여 배열을 다시 문자열로 변환하여 반환합니다.

 

한 번만 등장한 문자

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

 

function solution(s) {
  let charCount = {};

  for (let i = 0; i < s.length; i++) {
    const char = s[i];
    if (charCount[char]) {
      charCount[char]++;
    } else {
      charCount[char] = 1;
    }
  }

  let uniqueChars = "";
  for (const char in charCount) {
    if (charCount[char] === 1) {
      uniqueChars += char;
    }
  }

  return uniqueChars.split("").sort().join("");
}

먼저 charCount라는 객체를 사용하여 각 문자가 등장한 횟수를 카운트합니다. 반복문을 통해 문자열 s를 순회하면서 charCount 객체에 각 문자의 등장 횟수를 저장합니다.

그 후, 두 번 이상 등장한 문자를 필터링하여 한 번만 등장하는 문자들을 uniqueChars 문자열에 추가합니다. 마지막으로 uniqueChars 문자열을 사전 순으로 정렬하여 반환합니다.

 

약수 구하기

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

function solution(n) {
  var answer = [];

  for (let i = 1; i <= Math.sqrt(n); i++) {
    if (n % i === 0) {
      answer.push(i);
      if (i !== n / i) {
        answer.push(n / i);
      }
    }
  }

  return answer.sort((a, b) => a - b);
}

주어진 숫자 n의 약수를 찾기 위해 반복문을 사용합니다. i를 1부터 n의 제곱근까지 증가시키면서 n을 i로 나누어 나머지가 0인 경우 i는 n의 약수입니다. i를 answer 배열에 추가하고, i와 n / i가 같지 않은 경우에만 n / i도 answer 배열에 추가합니다.

마지막으로 answer 배열을 오름차순으로 정렬하여 반환합니다.

 

 

728x90
반응형
다쭐◠‿◠