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

소히·2022년 11월 10일
0

알고리즘Daily

목록 보기
15/22
post-thumbnail

중복된 문자 제거


문제

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ my_string ≤ 110
  • my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
  • 대문자와 소문자를 구분합니다.
  • 공백(" ")도 하나의 문자로 구분합니다.
  • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.

입출력 예

  • "people"에서 중복된 문자 "p"와 "e"을 제거한 "peol"을 return합니다.

풀이

new Set() 메서드를 사용하여 중복을 제거하였다.

  • Set()은 value들로 이루어진 집합이다.
    Array와는 다르게 Set은 중복된 value를 포함 할 수 없다.
    따라서 Set에 이미 존재하는 값을 추가하려고 하면 아무일도 일어나지 않는다.
function solution(my_string) {
  return [...new Set(my_string)].join("");
}

컨트롤 제트


문제

숫자들이 공백으로 구분된 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 “Z”가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 “Z”로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < s의 길이 < 1,000
  • -1,000 < s의 원소 중 숫자 < 1,000
  • s는 숫자, "Z", 공백으로 이루어져 있습니다.
  • s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
  • 연속된 공백은 주어지지 않습니다.
  • 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
  • s의 시작과 끝에는 공백이 없습니다.
  • 모든 숫자를 지우는 경우는 주어지지 않습니다.
  • 지울 숫자가 없는 상태에서 "Z"는 무시합니다.

입출력 예

  • "10 Z 20 Z 1"에서 10 다음 Z, 20 다음 Z로 10, 20이 지워지고 1만 더하여 1을 return 합니다.

풀이

s 배열값이 Z이면 splice 메서드를 사용하여 바로 앞 인덱스부터 2개를 제거하였다.
s 배열이 더이상 Z를 포함하지 않을때까지 반복문을 돌렸다.
마지막으로 배열의 남은 숫자들을 더해준 값을 리턴하였다.

function solution(s) {
  s = s.split(" ");
  while (s.includes("Z")) {
    s.splice(s.indexOf("Z") - 1, 2);
  }
  return s.reduce((a, b) => a + Number(b), 0);
}


369게임


문제

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 1 ≤ order ≤ 1,000,000

입출력 예

  • 29423은 3이 1개, 9가 1개 있으므로 2를 출력합니다.

풀이

function solution(order) {
  return [...order.toString()].filter(
    (el) => el === "3" || el === "6" || el === "9"
  ).length;
}

0개의 댓글