기초부터 시작하는 코딩/Programmers

Programmers 문제를 풀어봅시다. Day16

kebab00 2023. 6. 1. 22:48

728x90

1. 중복된 문자 제거

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

function solution(my_string) {
  let answer = '';
  for (let i = 0; i < my_string.length; i++) {
    if (!answer.includes(my_string[i])) {
      answer += my_string[i];
    }
  }
  return answer;
}
  1. solution 함수는 주어진 문자열 my_string을 매개변수로 받습니다.
  2. answer 변수를 빈 문자열로 초기화합니다. 이 변수는 중복을 제거한 문자열을 저장할 것입니다.
  3. for 루프를 사용하여 my_string의 각 문자에 대해 반복합니다. 루프 변수 i는 0부터 my_string의 길이보다 작을 때까지 증가합니다.
  4. 각 반복에서 현재 문자 my_string[i]가 answer에 포함되어 있는지 확인합니다. 이를 위해 includes 메서드를 사용합니다. 포함되어 있지 않은 경우에만 아래의 코드를 실행합니다.
  5. 현재 문자 my_string[i]를 answer에 추가합니다.
  6. 반복이 끝나면 중복이 제거된 문자열 answer을 반환합니다.

코드는 중복을 제거하기 위해 answer 문자열에 문자를 하나씩 추가하는 방식을 사용합니다. 만약 입력 문자열이 "aabbbccc" 같은 경우, answer "abc" 됩니다.

2. 컨트롤 제트

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

function solution(s) {
    s = s.split(" ")
    // Z가 있다면, 이전것과 같이 삭제
    while(s.includes('Z')) {
        s.splice(s.indexOf('Z')-1,2)
    }
    return s.reduce((a,b) => a+Number(b), 0)
}
  1. solution 함수는 주어진 문자열 s 매개변수로 받습니다.
  2. 문자열 s 공백을 기준으로 분할하여 배열로 변환합니다. split 함수를 사용하여 수행됩니다.
  3. while 루프를 사용하여 배열 s 'Z' 포함되어 있는 동안 반복합니다. (, 'Z' 없을 때까지 반복합니다.)
  4. 루프 내에서 'Z' 번째 등장 위치(indexOf('Z')) 찾고, 이전과 자리의 요소를 배열에서 제거합니다. splice 함수를 사용하여 수행됩니다.
  5. 반복이 끝나면 배열 s 남은 숫자들의 합을 계산합니다. reduce 함수를 사용하여 배열의 모든 요소를 순회하면서 누적값을 계산합니다. 초기 누적값은 0으로 설정됩니다.
  6. 숫자들의 합을 반환합니다.