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

Programmers 문제를 풀어봅시다. Day20

kebab00 2023. 6. 5. 16:20

728x90

1. 가장 큰 수 찾기

정수 배열 array 매개변수로 주어질 , 가장 수와 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

function solution(array) {
  return [Math.max(...array), array.indexOf(Math.max(...array))];
}

- JavaScript에서는 배열에서 최대값을 찾기 위해 Math.max() 함수를 사용할 수 있습니다.

- 전개 연산자(...)는 배열 요소를 개별 인수로 전달하기 위해 사용됩니다.

- 마찬가지로, indexOf() 메소드를 사용하여 배열에서 최대값의 인덱스를 찾을 수 있습니다.

- 참고로, 위의 코드는 입력 배열이 숫자 값을 포함한다고 가정합니다.

- 배열에 숫자가 아닌 요소가 포함되어 있거나 배열이 비어있는 경우, 코드가 예상대로 작동하지 않을 있습니다.

전개연산자

전개 연산자는 배열이나 객체와 같은 이터러블(iterable) 요소들을 분해하여 개별 요소들을 별도의 인수로 전달하는 데 사용되는 문법입니다. JavaScript에서는 ... 기호를 사용하여 전개 연산자를 표현합니다.

전개 연산자는 다음과 같은 몇 가지 유용한 용도를 가지고 있습니다:

  1. 함수 호출 시 인수 전달: 함수를 호출할 때 배열 요소들을 개별 인수로 전달할 수 있습니다.
function add(a, b, c) {
  return a + b + c;
}

const numbers = [1, 2, 3];
console.log(add(...numbers)); // 출력: 6

    2. 배열 합치기: 두 개 이상의 배열을 합칠 때 전개 연산자를 사용할 수 있습니다.

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const combined = [...arr1, ...arr2];
console.log(combined); // 출력: [1, 2, 3, 4, 5, 6]

    3. 배열 복사: 전개 연산자를 사용하여 배열을 복사할 수 있습니다.

const original = [1, 2, 3];
const copy = [...original];
console.log(copy); // 출력: [1, 2, 3]

    4. 객체 병합: 전개 연산자를 사용하여 객체를 병합할 수 있습니다.

const obj1 = { x: 1, y: 2 };
const obj2 = { z: 3 };
const merged = { ...obj1, ...obj2 };
console.log(merged); // 출력: { x: 1, y: 2, z: 3 }

전개 연산자는 ES6(ES2015)부터 도입된 기능이며, 배열이나 객체와 같은 이터러블(iterable) 다룰 유용하게 사용됩니다.

2. 문자열 계산하기

my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.

function solution(my_string) {
    let arr = my_string.split(" ").map(el => el*0 === 0 ? Number(el) : el)
    let sum = arr[0];
    for(let i=1; i<arr.length; i+=2){
      arr[i] === "+" ? sum += arr[i+1] : sum -= arr[i+1]
    }
    return sum   
}

- my_string 공백을 기준으로 분할하고, split() 함수를 사용하여 배열로 변환합니다.

- my_string.split(" "): 주어진 문자열을 공백을 기준으로 분할하여 배열로 변환합니다.

- map(el => el*0 === 0 ? Number(el) : el): 분할된 배열의 요소를 숫자로 변환합니다.

- 변환 조건은 el * 0 === 0으로, 이는 el 숫자인지 확인하기 위한 조건입니다.

- 숫자인 경우 Number(el) 변환하고, 아닌 경우 그대로 둡니다. 이렇게 변환된 배열을 arr 할당합니다.

- sum 변수를 arr 번째 요소로 초기화합니다.

- arr[0]: arr 배열의 번째 요소를 sum 변수에 할당합니다. 요소는 초기 합계 값으로 사용됩니다.

- for 루프를 사용하여 배열 요소를 순회합니다.

- i=1: 인덱스 1부터 시작하여 arr 배열을 반복합니다.

- i<arr.length: i arr 길이보다 작을 때까지 반복합니다.

- 반복문 내에서 현재 인덱스(i) 요소와 다음 인덱스(i+1) 요소를 확인하여 연산을 수행합니다.