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
- 코딩테스트
- 백준
- 프로그래머스
- 재귀와반복문
- GCP
- Spring MVC 구성요소
- Array.asList
- 백준 11659
- 인텔리제이
- MySQL
- 11659
- 코드스테이츠 백엔드
- java
- OOP
- 투포인터알고리즘
- vm인스턴스생성
- Spring Web MVC
- 구간합구하기
- 스택
- 클라우드에서 도커 실행하기
- Spring MVC 동작원리
- 버블정렬
- 코드스테이츠
- List.of
- 자바
- 성능테스트툴
- 재귀함수
- 알고리즘
- 싱글톤패턴
- String.valueOf()
Archives
- Today
- Total
순간을 기록으로
[JAVA] 프로그래머스 약수의 개수와 덧셈 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/77884?language=java
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
풀이
약수에 대한 개념이 필요한 문제다. 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