Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리액트오류
- Where
- foreach
- map
- 부트캠프 취업후기
- Firebase
- 패스트캠퍼스 부트캠프
- sqld 자격증 시험
- sqld 55회
- 부트캠프
- 퍼블리셔 이직후기
- 패스트캠퍼스
- js CRUD
- 프론트엔드부트캠프후기
- 야놀자 fe 1기
- 야놀자x패스트캠퍼스
- 2024 sqld
- reduce
- 국비지원
- github
- firebase rules
- 국비지원취업
- promise 비동기처리
- Filter
- 성능개선
- 프론트엔드개발자
- react hook
- git
- css 꿀팁
- TypeScript
Archives
- Today
- Total
Tech is created to fix problem
[프로그래머스 Lv.1] 기사단원의 무기 약수 구하기 for 문 본문
반응형
1. 문제
2. 생각흐름
1) 1부터 number 까지 각각의 수가 가진 약수의 갯수를 구하자 --> 약수를 구하는 함수를 하나 만들기
2) 그 갯수들을 다 더하되, for 문을 돌면서 limit 이 넘는 수가 있다면 power 로 대체해서 더하기
*문제를 풀 때, 약수나 소수가 나오면 즉 수학 개념이 나오면 거기서부터는 막힌다,, 꼭 검색을 해야하는ㅜ
3. 풀이
// n 수의 약수들을 배열로 만들어주는 함수
function findDivisors(n) {
const divisors = [];
for (let i = 1; i <= n; i++) {
if (n % i === 0) {
divisors.push(i);
}
}
return divisors;
}
function solution(number, limit, power) {
let result = 0;
for (let i = 1; i <= number; i++) {
const divisors = findDivisors(i).length;
if(divisors <= limit){
result += divisors
} else {
result += power
}
}
return result;
}
solution(5,3,2)
1) 약수를 구하는 함수는 n이라는 숫자를 1부터 자기 자신까지 나눴을 때 나누어 떨어지는 숫자를 divisors 배열에 넣어준다
2) solution 함수에서 number 들을 순회하면서 약수의 갯수를 result 에 계속 누적해서 담는다
4. 알게 된 점
let result 를 함수 바깥에 전역변수로 선언했는데, 함수 내부에서만 사용하기 때문에 지역변수로 바꿔주었다.
그리고 solution 함수에서 for 문까지 작성을 했는데 return 값을 주지 않았다. 문제풀이에서 답을 리턴해야 하기 때문에 리턴값을 추가했다.
반응형
'알고리즘' 카테고리의 다른 글
입출력 문제풀이 (0) | 2023.09.26 |
---|---|
[프로그래머스 Lv.1] 폰켓몬 중복되는 배열 Set (0) | 2023.09.02 |
[알고리즘] 코딩테스트 JavaScript 핵심 문법 (0) | 2023.08.06 |