문제풀이_배열

future·2020년 12월 14일
0

문제풀이

목록 보기
3/6

#getLongestWord

function getLongestWord(str) {  // 'i need a break'

1. 문자열끼리의 길이 비교를 위해 split을 사용하여 문자열을 배열로 만들어준다.

  let arr = str.split(' '); 	// ['i', 'need', 'a', 'break']
  
2. 배열의 처음인 0번째 요소가 가장 긴 문자열이라고 가정한다.

  let longest = arr[0];
  
3. 반복문을 사용하여 배열의 마지막 요소까지 반복 사이클을 돌려준다.
4. 만약 요소의 길이가 지정해둔 longest의 길이보다 길 경우, 해당 요소가 longest가 된다.

  for (let i = 0; i < arr.length; i++) {
    if (arr[i].length > longest.length) {
      longest = arr[i];
    }
  }
  return longest;
}

#createPhoneNumber

0-9 사이의 정수를 요소로 갖는 배열을 입력받아 전화번호 형식의 문자열을 리턴해야 한다.

  • 배열의 길이는 8 또는 11
  • 배열의 길이가 8인 경우, 앞에 [0, 1, 0]이 있다고 가정
  • string 타입을 리턴
  • 반복문(for, while) 사용은 금지
function createPhoneNumber(arr) {

1. 먼저 연락처 앞자리(010)와 뒷자리(1234-5678)를 구분하여 변수를 지정해줬다.

  let front = '';
  let back = '';
  
2. 배열의 길이에 따라 앞자리와 뒷자리에 올 배열을 slice로 잘라준다.
3. string으로 리턴해야 하기 때문에 잘라준 배열에 join을 사용하여 문자열로 만들어준다.

  if (arr.length === 8) {
    front = front + '(010)';
    back = back + `${arr.slice(0, 4).join('')}-${arr.slice(4).join('')}`;
  } else if (arr.length === 11) {
    front = front + `(${arr.slice(0, 3).join('')})`;
    back = back + `${arr.slice(3, 7).join('')}-${arr.slice(7).join('')}`;
  }
  return front + back;
}

4. 마지막에 front(앞자리)와 back(뒷자리)를 더해주는 값을 리턴시켜준다.

#fibonacci

수(num)를 입력받아 num번째까지 총 num + 1개의 피보나치 수열을 리턴해야 한다.
0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다.
그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

  • 배열을 리턴
  • 반복문(for)문을 사용
  • 피보나치 수열은 0번부터 시작
function fibonacci(num) {

1. 변수를 선언 후 피보나치 수열을 담아줄 빈 배열을 할당해준다.

  let arr = [];
  
2. 0부터 num까지 돌아가는 반복문을 만들어준다.

  for (let i = 0; i <= num; i++) {
  
3. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이기 때문에
   i가 0이나 1일 경우에는 해당 숫자가 리턴되도록 조건문을 따로 작성해준다.

    if (i === 0) {
      arr.push(0);
    } else if (i === 1) {
      arr.push(1);
      
4. 피보나치 수는 해당 수 직전의 두 수의 합이기 때문에,
   (해당 수 - 1)와 (해당 수 - 2)를 하였을 때 나오는 값들을 더해준다.

    } else {
      arr.push(arr[i - 2] + arr[i - 1]);
    }
  }
  return arr;
}
profile
get, set, go!

0개의 댓글