Bomb Kirby Running

코딩 테스트 챌린지

코딩 테스트 13

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

Life is what happens to you while you’re busy making other plans.

John Lennon

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를 반환합니다.