daily 알고리즘 : 프로그래머스 0 level 13일차

소히·2022년 11월 12일
0

알고리즘Daily

목록 보기
17/22
post-thumbnail

인덱스 바꾸기


문제

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


제한사항

  • 1 < my_string의 길이 < 100
  • 0 ≤ num1, num2 < my_string의 길이
  • my_string은 소문자로 이루어져 있습니다.
  • num1 ≠ num2

입출력 예

  • "hello"의 1번째 인덱스인 "e"와 2번째 인덱스인 "l"을 바꾸면 "hlelo"입니다.

풀이

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

약수 구하기


문제

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


제한사항

  • 1 ≤ n ≤ 10,000

입출력 예

  • 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.

풀이

function solution(n) {
  let i = 1;
  let answer = [];
  while (i <= n) {
    n % i === 0 && answer.push(i);
    i++;
  }
  return answer;
}


잘라서 배열로 저장하기


문제

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ n ≤ my_str의 길이
  • my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

입출력 예

  • "abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return해야 합니다.

풀이

function solution(my_str, n) {
  let arr = my_str.split("");
  let result = [];
  while (arr.length > 0) {
    let slice = arr.splice(0, n);
    result.push(slice.join(""));
  }
  return result;
}

외계어 사전


문제

PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.


제한사항

  • spell과 dic의 원소는 알파벳 소문자로만 이루어져있습니다.
  • 2 ≤ spell의 크기 ≤ 10
  • spell의 원소의 길이는 1입니다.
  • 1 ≤ dic의 크기 ≤ 10
  • 1 ≤ dic의 원소의 길이 ≤ 10
  • spell의 원소를 모두 사용해 단어를 만들어야 합니다.
  • spell의 원소를 모두 사용해 만들 수 있는 단어는 dic에 두 개 이상 존재하지 않습니다.
  • dic과 spell 모두 중복된 원소를 갖지 않습니다.

입출력 예

  • "p", "o", "s" 를 조합해 만들 수 있는 단어가 dic에 존재하지 않습니다. 따라서 2를 return합니다.

풀이

function solution(spell, dic) {
  let word = spell.sort();
  let answer = dic.filter((el) => {
    return [...el].sort().join("") === word.join("");
  });
  if (answer.length > 0) {
    return 1;
  } else return 2;
}

제곱수 판별하기


문제

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


제한사항

  • 1 ≤ n ≤ 1,000,000

입출력 예

  • 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.

풀이

function solution(n) {
  let i = 1;
  let res;
  while (i * i < n) {
    i++;
  }
  i * i === n ? (res = 1) : (res = 2);
  return res;
}

0개의 댓글