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
- 구간합구하기
- 버블정렬
- Spring MVC 동작원리
- 인텔리제이
- java
- 백준
- 재귀함수
- 스택
- OOP
- 프로그래머스
- 11659
- 알고리즘
- List.of
- 성능테스트툴
- 클라우드에서 도커 실행하기
- 코딩테스트
- 싱글톤패턴
- 자바
- 백준 11659
- 코드스테이츠 백엔드
- 투포인터알고리즘
- 재귀와반복문
- Spring Web MVC
- MySQL
- Spring MVC 구성요소
- 코드스테이츠
- String.valueOf()
- vm인스턴스생성
- GCP
- Array.asList
Archives
- Today
- Total
순간을 기록으로
[JAVA] 프로그래머스 약수의 개수와 덧셈 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/77884?language=java
풀이
약수에 대한 개념이 필요한 문제다. N의 약수란 N을 나누어 떨어지게 하는 양의 정수를 말한다.
예를들어 4의 약수는 1, 2, 3, 4가 있다. 3의 약수는 1, 3이다. 어떤 수가 나누어 떨어지는지는 알려면 나머지 연산(%)을 사용하면 된다. 만약 나누어 떨어지는 수라면 나머지 연산을 한 반환값이 0이 나와야 한다.
코드
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class Solution {
public int solution(int left, int right) {
int answer;
int sum = 0;
for (int i=left; i<=right; i++) { // left부터 right 값까지 검사한다.
int num = findNumOfDivisor(i); // 이 메소드는 약수의 갯수를 반환한다.
if (num%2 == 0) // 만약 약수의 갯수가 짝수면
sum += i;
else // 만약 약수의 갯수가 홀수면
sum -=i;
}
answer = sum;
return answer;
}
private int findNumOfDivisor(int num) {
int count = 0;
for (int i=1; i<=num; i++) {
if (num%i == 0)
count++;
}
return count;
}
@Test
void test() {
Assertions.assertEquals(solution(13,17), 43);
Assertions.assertEquals(solution(24,27), 52);
}
}
'Problem Solving' 카테고리의 다른 글
[Java] 최대 길이 연속부분수열 (0) | 2022.01.17 |
---|---|
[Java] 프로그래머스 폰켓몬 (0) | 2022.01.17 |
[Java] 회의실 배정 (0) | 2022.01.14 |
[JAVA] 체육복 (0) | 2022.01.14 |
[Java] 소수만들기 (0) | 2022.01.13 |
Comments