스터디 기록 17

유아현·2022년 12월 16일
0

Study

목록 보기
18/27
post-thumbnail

문제 목록

❤️‍🔥 최댓값과 최솟값

function solution(s) {
  // 공백으로 기준으로 split
  s = s.split(' ');
  console.log(s);

  // s는 문자열 형태이므로 숫자로 바꾸기
  s = s.map((ele) => (ele = Number(ele)));
  console.log(s);

  // 최대, 최솟값 구하기
  const max = Math.max(...s);
  const min = Math.min(...s);

  // 최솟값 최대값 문자열로 리턴
  let result = `${min} ${max}`;
  console.log(result);

  return result;
  console.log(max);
}

solution('1 2 3 4');

매개변수 s에 있는 문자열 중 최댓값과 최솟값을 구하기 위해서 일단 공백을 기준으로 나누어 주고 Math를 사용하기 위해서 string이 들어왔으므로 map을 통해 전체 요소들을 number타입으로 변환해 주었다. 그리고 각각의 max와 min을 구하여 리턴 시켜 주었는데 스터디 코드 리뷰를 하던 중에 숫자 형변환을 시켜주지 않아도 Math가 정상적으로 먹힌다는 것을 알게 되었다.... 난 당연히 숫자를 추출하는 것이니까 타입이 숫자여야 된다고 생각해서 바꾸어 주었는데 된다니 신기할 따름.

🤔 Math는 문자열로 받아도 원하는 값을 얻을 수 있을까?

Math.max에 대놓고 문자열들을 줘 봤다 그랬더니 아주 정상적으로 원하는 답인 4가 출력됨을 확인할 수 있다. 궁금해서 찾아 보니 받은 인자들을 숫자로 변환한다는 것을 알았다.

function solution(s) {
    // 최대값과 최소값을 넣을 수 있는 변수를 선언한다.
    // 문자열을 공백으로 나누고 최대값과 최소값을 비교한다.
    // 최종적으로 선별된 최대값과 최소값을 문자열에 넣어 리턴
    let lower = Infinity;
    let higher = -Infinity;
    for(let value of s.split(' ')){
        value = +value;
        if(lower > value){
            lower = value;
        }
        if(higher < value){
            higher = value;
        }
    }
    return lower + " " + higher;
}

효근님의 코드 제일 작은 값과 큰 값을 Infinity로 주신 게 신기해서 가지고 왔다. Infinity 전역 속성은 무한대를 나타내는 숫자값으로 Infinity는 양의 무한대, -Infinity 음의 무한대를 나타낸다고 한다.

❤️‍🔥 JadenCase 문자열 만들기

function solution(s) {
  // 각 단어의 첫 글자를 제외한 나머지는 모두 소문자이므로 전체를 소문자로 먼저 변환
  // s = s.toLowerCase();

  // 공백 기준으로 배열로 변환
  const arr = s.split(' ');

  // substring을 통해 각 부분을 추출해서 첫 글자만 대문자로 변환 후, 나머지와 붙여주기
  return arr
    .map((word) => {
      return (
        word.substring(0, 1).toUpperCase() + word.substring(1, word.length).toLowerCase()
      );
    })
    .join(' ');
}

solution('for the last week');

처음에 전부 소문자로 해 주었으나 생각해보니까 map으로 해 주면서 한번에 처리해도 괜찮을 것 같아서 주석처리로 두었다.

function solution(s) {
    return s
        .split(" ")
        .map((v) => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase())
        .join(" ");
}

승연님의 코드! 내 코드읭 완전 축약형이다. substring 1로만 줘도 됐는데 하나하나 썼군... 간결하게 쓰도록 노력해야겠다!

❤️‍🔥 최솟값 만들기

function solution(A, B) {
  // A, B 각각 한 개의 숫자를 뽑아서 곱한다.
  // 곱한 값들을 누적해서 더한다.
  // 최종적으로 누적된 값이 최소가 되도록 만드는 게 목표
  // A를 오름차순으로, B를 내림차순으로 정렬해서 A, B의 각 인덱스를 곱할 때 최솟값을 만들 수 있음
  A = A.sort((a, b) => a - b);
  B = B.sort((a, b) => b - a);

  let result = 0;
  for (let i = 0; i < A.length; i++) {
    const sum = A[i] * B[i];
    result += sum;
  }

  return result;
}

최소값을 만들어야 되므로 하나는 오름차순, 하나는 내림차순으로 정렬해서 각 인덱스 위치끼리 곱한 후 누적해서 리턴시켜 주었다.

0개의 댓글