[Today I Learned] 11월 2주차 day4

suwoncityboyyy·2022년 11월 10일
0

오늘은 알고리즘/자료구조에 대해서 공부를 했다.
요새는 하루종일 프로그래머스 문제를 풀면서 알고리즘 강의를 듣는다.
오늘은 lnikedlist,이진탐색,재귀함수 등등을 공부했고 문제를 풀려고 시도했지만 나에게는 아직 넘지못할 커다란 벽인것 같다.

배열과 연결리스트의 차이

해당 자료구조가 어디서 쓰이는지 어떻게 쓰이는지 코드로 따라 쳐봤고 오늘 중점적으로 공부한 것은 재귀함수와 객체에 대한 이해이다.

재귀함수

재귀함수는 함수내에서 자기 자신을 다시 호출하는 함수를 말한다.

function factorial(num) {
if (num < 0)
return -1;
else if (num == 0)
return 1;
else {
return (num * factorial(num - 1));
}
}

factorial(5); // 5*4*3*2*1 의 값인 120

프로그래머스 팩토리얼 문제

결국 내 힘으로 풀지 못했다. 풀이를 보면서 알고리즘이 어떻게 쓰였는지 보고 응용할 생각이다.
계속 눈으로 보니까 코드는 확실히 이해를 했다.

function solution(n) {
    let res = 0
    for (let i = 1 ; i <=10; i++) {
        if(n >= fact(i)) {
            res = i
            continue
        }else {
            break
        }
    }
    return res
}

function fact (num) {
    if(num > 1) return num*fact(num-1)
    return num
}

그리고 객체 map 과 set에 대하여 공부 중이다.
추가로 최빈값구하기 문제를 푸는중인데 도저히 풀리지가 않는다ㅠㅠㅠ
앞으로 객체에 대해 다시 공부해야 할 것 같다. 아직 기본기가 부족하다는 걸 최빈값 푸는과정에서 느꼈다.

프로그래머스 최빈값구하기

// 다시풀어야함!!


function solution(array) {
  // const test = [ ...new Set([1,2,1])]
  // console.log(test)
  // let set = [] // 1. 중복없애는 배열
  // for (let i =0; i < array.length; i++) {
  //     if(! set.includes(array[i])) {
  //         set.push(array[i])  
  //     }      
  // }
   
  let obj = {} //2. 중복된 배열요소를 키값으로 하는 객체 생성 
  for(let i = 0; i<array.length; i++) {
      obj[array[i]] = 0
  }
  for (let value of array) {  
      obj[value] = obj[value]+ 1        
  }
  let maxValue = 0
  let maxKey = 0
  for (let key in obj) {
      const value = obj[key]
      if(maxValue < value) {
           maxValue = value
           maxKey = key 
      }
  }
  for (let key in obj) {
      const value = obj[key]
      if()
  }
  
  return +answer
}
profile
주니어 개발자 기술노트

0개의 댓글