부트캠프 React 과정 7.31

김진우·2023년 7월 31일
0

오늘의 목표

  • 알고리즘 문제풀기 (O)

  • TypeScript 강의 완강하기 (O)

어려운것

  • 알고리즘 문제를 푸는도중 어려운 점을 만났다.
    ``
    문제 설명
    정수가 있을 때, 짝수라면 반으로 나누고, 홀수라면 1을 뺀 뒤 반으로 나누면, 마지막엔 1이 됩니다. 예를 들어 10이 있다면 다음과 같은 과정으로 1이 됩니다.

10 / 2 = 5
(5 - 1) / 2 = 4
4 / 2 = 2
2 / 2 = 1
위와 같이 4번의 나누기 연산으로 1이 되었습니다.

정수들이 담긴 리스트 num_list가 주어질 때, num_list의 모든 원소를 1로 만들기 위해서 필요한 나누기 연산의 횟수를 return하도록 solution 함수를 완성해주세요.
``
이문제에서 처음에 어떻게 로직을 풀어갈지 생각을 이렇게하고.

정수가 있을때 짝수라면 반을 나누고 홀수라면 1을뺀뒤 반을 나눈다 결국 마지막에 1이 된다. 1이 된시점 return값을 횟수로 지정한다. 배열안에 모든 수를 1로 만들었을때 return값을 더해준다.
문제를 풀었는데 원하는 값이 도출이 되지 않았다.

``

function solution(num_list) {
let count = 0;
for(let i = 0 ; i < num_list.length;i++){
let num = num_list[i];
while(num > 1){
if(num % 2 === 0){
num /= 2
}else{
num = (num-1) / 2
}
count ++
if(num === 1){
break
}
}
}
return count;
}

``
결국 while문을 통해서 num에 숫자가 들어오면 1보다 작아질때까지 로직을 반복하게 만들고
한번 돌때마다 count숫자를 생성 하게 하여서 로직을 완성하였다.
for문 if문을 많이 사용하다보니 while문을 사용하는것이 바로바로 머리에 떠오르지 않았고
알고리즘 문제를 풀때 정말 다방면으로 생각을 해야된다는것을 느꼈습니다.

느낀점

  • 오늘 TypeScript강의를 완강하고 실습부분에대해 아직 익숙하지 않고 또한 많은 예제를 풀어봄으로써 직접 와닫게 하고싶어서 youtube에 직접 찾아봐서 예제도 풀어보았다.
    강의를 들으면서 많은 부분을 들어서 그런지 잘 모르겠고 어떻게 react에 녹아들어서 사용을 해야될지 감이 안왔었는데 youtube에 직접 찾아서 react에 typeScript를 적용 시키는 예제를 같이 해봄으로써 어떤 방식으로 접근하고 풀어나가야 될지 조금은 감이 잡힌거 같다.
    또한 오늘 알고리즘 문제 2문제를 풀었는데 아직 생각의 폭이 좁은거 같다. 다른 여러 방면에
    조건식이나 반복문 또한 매서드도 생각을하고 풀어나갈려고 해야 되겠다는 생각도 많이 했습니다.

0개의 댓글