Bomb Kirby Running

코딩 테스트 챌린지

코딩 테스트 13

^. ̫ .^ 2023. 5. 29. 19:20

728x90

문제1 컨트롤 제트

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

 

제한사항

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

입출력 예

s result
"1 2 Z 3" 4
"10 20 30 40" 100
"10 Z 20 Z 1" 1
"10 Z 20 Z" 0
"-1 -2 -3 Z" 3
function solution(s) {
  let numbers = s.split(" ");
  let sum = 0;
  let previousNumber = 0;

  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] === "Z") {
      sum -= previousNumber;
    } else {
      var number = parseInt(numbers[i]);
      sum += number;
      previousNumber = number;
    }
  }

  return sum;
}


문자열 `s`를 공백을 기준으로 나누어 숫자들을 담은 배열 `numbers`를 생성합니다.

초기 합계를 나타내는 변수 `sum`을 0으로 초기화합니다.
이전 숫자를 저장할 변수 `previousNumber`를 0으로 초기화합니다.
`numbers` 배열을 반복하면서 숫자 또는 "Z"를 확인합니다.
만약 현재 원소가 "Z"라면, 이전에 더했던 숫자인 `previousNumber`를 `sum`에서 빼줍니다.
현재 원소가 숫자라면, 해당 숫자를 정수로 변환하여 `sum`에 더해줍니다. 동시에 `previousNumber`를 현재 숫자로 업데이트합니다.

반복이 종료되면 최종적인 `sum` 값을 반환합니다.

문제2 배열 원소의 길이

문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ strlist 원소의 길이 ≤ 100
  • strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

입출력 예

strlist result
["We", "are", "the", "world!"] [2, 3, 3, 6]
["I", "Love", "Programmers."] [1, 4, 12]
function solution(strlist) {
  var lengths = [];
  for (var i = 0; i < strlist.length; i++) {
    lengths.push(strlist[i].length);
  }
  return lengths;
}


 먼저 빈 배열 `lengths`를 생성합니다. 이 배열은 각 원소의 길이를 담을 것입니다.
 `for` 반복문을 사용하여 `strlist` 배열을 순회합니다. 반복문의 변수 `i`는 0부터 시작하며, `i`가 `strlist.length`보다 작을 때까지 반복합니다.
각 반복에서 `strlist[i].length`를 이용하여 현재 원소의 길이를 구합니다. `strlist[i]`는 `strlist` 배열의 `i`번째 원소를 의미하고, `.length`는 해당 문자열의 길이를 반환합니다.
구한 길이를 `lengths` 배열에 `push` 메소드를 사용하여 추가합니다.
반복이 종료되면 `lengths` 배열을 반환합니다.

문제3 중복된 문자 제거

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

 

제한사항

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

입출력 예

my_string result
"people" "peol"
"We are the world" "We arthwold"
function solution(my_string) {
  var uniqueChars = '';

  for (var i = 0; i < my_string.length; i++) {
    if (!uniqueChars.includes(my_string[i])) {
      uniqueChars += my_string[i];
    }
  }

  return uniqueChars;
}


빈 문자열 `uniqueChars`를 생성합니다. 이 변수는 중복된 문자를 제거하고 남은 유일한 문자들을 저장할 것입니다.

 `for` 반복문을 사용하여 `my_string`을 순회합니다. 반복문의 변수 `i`는 0부터 시작하며, `i`가 `my_string.length`보다 작을 때까지 반복합니다.
각 반복에서 현재 문자 `my_string[i]`가 `uniqueChars`에 포함되어 있는지를 확인합니다. 포함되어 있지 않다면 해당 문자를 `uniqueChars`에 추가합니다.
반복이 종료되면 `uniqueChars`를 반환합니다.

 

문제4 삼각형의 완성 조건

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 3입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

입출력 예

sides result
[1, 2, 3] 2
[3, 6, 2] 2
[199, 72, 222]
1

 

function solution(sides) {
  sides.sort((a, b) => a - b); 

  if (sides[2] < sides[0] + sides[1]) {
    return 1; 
  } else {
    return 2;
  }
}


주어진 변의 길이를 오름차순으로 정렬합니다. 이를 위해 `sort` 메소드를 사용하며, 비교 함수를 통해 숫자를 오름차순으로 정렬합니다.
가장 큰 변의 길이(`sides[2]`)가 나머지 두 변의 길이의 합(`sides[0] + sides[1]`)보다 작은지를 확인합니다.
만약 가장 큰 변의 길이가 나머지 두 변의 길이의 합보다 작다면, 세 변으로 삼각형을 만들 수 있는 경우이므로 1을 반환합니다.
그렇지 않은 경우 세 변으로 삼각형을 만들 수 없는 경우이므로 2를 반환합니다.