티스토리 뷰


이건 내가 제일 처음 풀었던 약수 구하는 문제에서 한 단계 더 나아간 것 같다.
약수의 개수를 먼저 구하고, 공격력을 구해야할 듯하다.
어떻게 단계를 나눌지 엄청 고민했는데 결국 다음과 같이 나누었다.
1. 각 기사의 번호에 대한 약수 계산
2. 그 약수의 개수에 따른 공격력 결정
3. 공격력이 제한수치를 초과하면, 협약기관의 공격력 적용
4. 필요한 철의 무게 모두 합산
function solution(number, limit, power) {
let totalWeight = 0;
function getDivisorCount(num) {
let count = 0;
for (let i = 1; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
count++;
if (i !== num / i) {
count++;
}
}
}
return count;
}
for (let i = 1; i <= number; i++) {
let attackPower = getDivisorCount(i);
if (attackPower > limit) {
attackPower = power;
}
totalWeight += attackPower;
}
return totalWeight;
}
새로운 코드
function solution(number, limit, power) {
var answer = 0;
for (let n = 1; n <= number; n++) {
let count = 0;
for (let j = 1; j * j <= n; j++) {
if (j * j == n) count++;
else if (n % j == 0) count += 2;
}
if (count > limit) count = power;
answer += count;
}
return answer;
}
조금 더 간결한 코드이다.
j * j <= n을 이용해 제곱근까지 약수를 탐색한다.
단일 함수에서 모든 작업을 수행하지만, 직관력은 부족한 것 같다.
효율적이고 간결하지만, 직관성이 떨어지며 크게 성능차이가 나지 않기 때문에
나는 내가 작성한 코드가 낫다고 생각한다.
'Oops, All Code! > 🤯 Oops, My Algorithm!' 카테고리의 다른 글
| ♡̈ 06. 프로그래머스:: 대충 만든 자판 (0) | 2024.07.08 |
|---|---|
| ♡̈ 05. 프로그래머스:: 덧칠하기 (0) | 2024.07.08 |
| - ̗̀ෆෆ ̖́ 08. 기본 입출력에 관한 예제 (0) | 2024.07.08 |
| - ̗̀ෆෆ ̖́ 07. 기본 입출력에 관한 예제 (0) | 2024.07.07 |
| ♡̈ 02. 프로그래머스:: 크기가 작은 부분문자열 (0) | 2024.07.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 우아한테크코스
- 트러블슈팅
- 어휘력
- 소사벌
- 회고
- 안성스타필드
- 대학생팝업스토어
- 프로토타입
- 프리코스
- javascript
- 소사벌맛집
- 코딩테스트
- 프론트엔드
- 네이버부스트캠프
- 경험플리마켓
- 카페추천
- 일급객체
- 어른의어휘공부
- 카드뉴스
- 책추천
- 서평
- 웹풀스택
- react
- 도서리뷰
- 부스트캠프
- typescript
- 대학생플리마켓
- js
- 비즈플리마켓
- 도서추천
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함