오늘 뭐했냐/기억하면 좋을 문제들

스코프 활용

스스로에게 2023. 6. 15. 11:48

n까지 돌면서 약수가 3개 이상인 합성수인 경우만 배열에 담아서 그 길이를 구한다약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

 

  1. n까지 돌면서 모든 합성수를 구한다
  2. 그 합성수를 배열에 담고 그 길이를 리턴한다
  • 약수가 3 이상인 경우는 어떻게 찾을까?  => 배열에 담자 
  • 그러면 배열은 몇 개가 필요할지 모르는데?  => 구하고 결과값에 담고 초기화
  • 어떻게 초기화? => 반복문 안에서 변수 선언하면 반복할 때마다 초기화 되지 않을까?  => 일단 해보자  
function solution(n) {

    let result = []
    for (i = 1; i <= n; i++) {
        let arr = []
        for (j = 1; j <= i; j++) {
            if (i % j === 0) {
                arr.push(j)
            }
            if (arr.length > 2) {
                result.push(i)
                break;
            }
        }
    }
    return result.length;
}

콘솔로 찍어보니 내 생각이 맞았다

 

그런데 합성수라고 확인 되면 더 반복할 필요가 없지 않나? => 합성수를 확인하는 배열 arr의 길이가 2 이상이면 반복문을 빠져나가고 다음 실행을 하자 

 

이렇게 해서 스코프를 활용하는 방법과 브레이크로 필요없는 연산을  더 하지 않는 방법을 아주 조금이라도 더 알게 되었다 결국 하다보면 늘겠지 

'오늘 뭐했냐 > 기억하면 좋을 문제들' 카테고리의 다른 글

for문에서 특정 숫자로 반복이 필요할 때  (0) 2023.06.15
indexOf()  (0) 2023.06.15
대소문자 반대로  (0) 2023.06.14
숫자야구  (0) 2023.06.14
map 사용  (0) 2023.06.14