4월 18일 알고리즘

하루에 하나씩 풀어보려고 한다.. 일단 1단계부터
쉬운 문제의 경우 하루에 2개 이상씩 풀자!

1.프로그래머스 1단계 수박수박수박수박수박수?
n이 4이면 "수박수박"을 리턴
n이 3이면 "수박수"를 리턴

=> n이 2의 배수일 경우 온전한 "수박"이 n을 2로 나누었을 때 만큼 반복
=> n이 2의 배수가 아닐 경우 "수박"을 n을 2로 나누었을 때 만큼 반복한 후에 "수"가 한번 붙는다.

내가 쓴 답압!!
function solution(n) {
    return n %2 === 0? 
    "수박".repeat(n/2): 
    "수박".repeat(n/2)+"수"
}

String.prototype.repeat()
repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환합니다.
=> str.repeat(count);


2.정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

function solution(arr) {
 let sum = 0
    for(let i =0; i< arr.length; i++){
     sum += arr[i] 
 } 
    return sum / arr.length

}

이렇게 해서 문제는 통과했는데 다른 사람 풀이를 보니 reduce라는 간단한 방법이?!
reduce를 배웠었고 활용하여 문제도 풀었었는데 전혀 생각도 못했다..

function average(array){
  return array.reduce((a, b) => a + b) / array.length;
}

이렇게 한줄로 나올 수 있는 코드였는데 for문을 다 돌렸던거였네...
오늘도 하나 배워갑니다


  1. 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
function solution(num) {
 if(num % 2 ===0){
     return "Even"
 }else {
     return "Odd"
 }
}

3항연산자 사용하면 한줄로 가능!

function evenOrOdd(num) {
  return num % 2 ? "Odd" : "Even";
}

  1. 서울에서 김서방 찾기
    String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
function solution(seoul) {
    let key = 0
  for(let i = 0 ; i< seoul.length; i++){
      if (seoul[i]==="Kim"){
          key = i
      }
  }
    return `김서방은 ${key}에 있다`
}

이렇게 풀었는데... 다른 사람들 풀이를 보니 indexOf를 사용... 훨씬 간단하게 풀 수 있는 문제를...

  var idx = seoul.indexOf('Kim');
  return "김서방은 " + idx + "에 있다";
}

오늘의 복습포인트!!
1. reduce
2. indexOf

좋은 웹페이지 즐겨찾기