본문 바로가기

내배캠 4기 React - TIL

221111 TIL

프로그래머스 Lv.0 각도기 문제풀이

<문제 설명>

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각, 180도는 평각으로 분류합니다.

각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180

  *제한사항

  • 0 < angle ≤ 180
  • angle은 정수입니다.

 ☞나의 풀이

function solution(angle) {
    let answer = 0;
    if (angle < 90) {
        return 1;
    } else if (angle === 90) {
        return 2;
    } else if (angle < 180) {
        return 3;
    } else if (angle === 180) {
        return 4;
    }
    return answer;
}

여러 번의 시도 끝에 답을 찾기는 했으나 정확히 이해가 가지 않아 다른 사람들의 풀이를 찾아봤다.

 

 ☞다른 사람 풀이

function solution(angle) {
	let answer = 0;
    if (angle > 0 && angle < 90) {
        return 1;
    } 
    if (angle === 90){ {
    	return 2;
    } 
    if (angle > 90 && angle < 180) {
    	return 3;
    }
    return 4; // 입력 조건에 따르면 위 3개를 만족하지 않으면 180도 일 수밖에 없다
}

→ 논리연산자 &&은 양쪽 값이 모두 true일 때 쓰는 연산자로

    angle이 0도 초과, 90도 미만 /  90도 초과 180도 미만에 쓰일 수 있다.

 

프로그래머스 Lv.0 두 수의 나눗셈 문제풀이

<문제 설명>

정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후

정수 부분을 return 

 

 *제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

 *입출력 예 설명

  • num1이 7, num2가 3, 7 /3 = 2.3333....에 1,000을 곱하면 2333.33333.이 되며, 정수 부분은 2333입니다.

 ☞나의 풀이

function solution(num1, num2) {
    var answer = (num1/num2) * 1000 
    return answer;
}

여기까지는 알겠는데 정수로 표현하는 함수가 뭐가 있는지 찾아보니 parseInt()와 Math.floor() 함수가 대표적으로 나왔다.

 

☞다른 사람 풀이

function solution(num1, num2) {
    var answer = parseInt((num1/num2) * 1000 )
    return answer;
}
//parseInt() : 문자열을 정수로 반환하는 함수
// 1. number -> string
// 2. 10진수 추론을 위해 string 앞 2글자가 0x나 0X인지 비교

function solution(num1, num2) {
    var answer = Math.floor((num1/num2) * 1000 )
    return answer;
} //Math.floor() : 항상 반올림하여 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환하는 함수

 → 경우에 따라 다르기는 하나 이 문제의 경우에서는 parseInt()은 필요없는 계산을 하고 결과가 나오는 거라 비효율적이고,

     Math.floor()는 수학적으로 소수점 이하로 버림을 하는 거라 이 경우엔 Math.floor()로 쓰는 게 낫다.

     소수점을 버리고 싶으면 Math.floor(), 정수를 남기고 싶으면 parseInt()를 쓰면 된다.

 

프로그래머스 Lv.0 짝수의 합 문제풀이

<문제 설명>

정수 n이 주어질 때, n 이하의 짝수를 모두 더한 값을 return 

 

 *제한사항

  : 0 < n ≤ 1000

 

 ☞나의 풀이

function solution(n) {
    let i = 1; // 1부터 시작하는 변수 설정 
    let sum = 0 // 더한 걸 누적시킬 변수 설정
    while (i <= n) { // n보다 작거나 같을 때 까지 
        if(i % 2 === 0) {
            sum = sum + i;
        }
        i = i + 1;
    }
    return sum;
}

  → 짝수를 구하는 거 까지는 알겠는데 이하의 짝수를 모두 더한 값을 구하는 게 어떻게 구해야하지 하는 생각에 

      한참을 고민했다... 변수를 설정하고 반복문을 써야하는 건 알겠는데 이걸 어떻게 쓰냔 말이지 하면서...

      고민을 하다하다 도저히 답이 안 나와서 찾아보고 코드 하나하나 뜯어서 해석해보니 이제야 이해가 갔다.

 

프로그래머스 Lv.0 배열의 평균값 문제풀이

<문제 설명>

정수 배열 numbers 매개변수 설정. numbers의 원소의 평균값을 return

 

 *제한사항

  • 0 ≤ numbers의 원소 ≤ 1000
  • 1≤ numbers의 길이 ≤ 100
  • 정답의 소수 부분이 .0 또는 .5인 경우만 입력

   ☞나의 풀이

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

 

☞다른 사람 풀이

function solution(numbers) {
    let sum = 0; // 누적한 값을 담을 변수를 미리 만들어 준다.(꼭)
    // sum = sum + numbers[0];
    // sum = sum + numbers[1];
    // sum = sum + numbers[2]; // 반복문을 통해서 배열 길이만큼 다 더하게 수정
    let cnt = 0;
    while(cnt < numbers.length){
        sum = sum + numbers[cnt];
        cnt = cnt + 1;
    }
    // sum : 배열의 총합이 들어있다.
    
    return sum / numbers.length;
}

  → 다른 사람들의 풀이를 보고 나니 모르는 함수로 간결하게 코드를 짜기도 했던데 그건 나중에 공부하기로 하고

      일단 for문과 while문의 차이가 뭔지 궁금해졌다. 

      둘 다 써도 되는 반복문이지만 분명 무슨 차이가 있을 거 같아서 찾아보았다.

 

for문 :  반복 횟수가 정해진 경우
for(초기식; 조건식; 변화식;)
// 한 줄에 다 들어가며, 초기식과 조건식이 다 돌고난 후 변화식이 돌아간다,

// 주어진 조건동한 '코드 실행 후 작업' 처리를 반복한다. 초기값이 주어지면 조건을 만족할 때 까지는 실행.

While문 : 무한루프나 특정 조건에 만족할 때까지 반복해야 하는 경우. 
초기식
while(조건식)
변화식
// 초기식은 따로 빼두고, 조건식은 while 옆에, 변화식은 밖으로 나와져 있다.
   반복된 문장들이 초기식-조건식-변화식을 거쳐 한 줄씩 출력된다.

// 조건이 true인 동안 반복 실행되고, false가 되는 순간 끝.

 

 

기초 문법 강의를 여러 번 보고 있는데 이게 뭔가 머리로는 알겠는데 쓰라고 하면 못 쓰겠는 상황이라서
공부 방향성도 안 잡히고 멘털이 흔들리기 시작했었다.
그러는 와중에 알고리즘까지 겪게 되니 아 이거 진짜 어떡하지 큰일 났다 싶었는데
어제부터 사람들이랑 이런저런 얘기 하면서 자바스크립부터 완벽하게 끝내놓자. 프로그래머스 0단계부터 풀면서 공부해 보자 해서 문제 풀기 시작했고 다른 사람들의 풀이를 보면서 처음 보는 함수도 알게 되고 이 함수에 대해 
공부하게 되고 그러면서 오늘에서야 공부 방향을 조금은 잡은 거 같다.
속도는 좀 느릴지언정 문제 하나씩 풀어가면서 코드 하나하나 해석하면서 그때그때 나오는 함수들 공부하고
이렇게 하다 보면 언젠간 나도 알아서 쓰고 있는 날이 오지 않을까 생각한다.

 

'내배캠 4기 React - TIL' 카테고리의 다른 글

221115 TIL  (0) 2022.11.15
221114 TIL  (0) 2022.11.14
221110 TIL - 원장님 특강  (0) 2022.11.10
221109 TIL - Python  (0) 2022.11.09
221108 TIL  (0) 2022.11.08