반응형
문제 출처:코딩 도장
※ 문제
10미만의 자연수에서 3과 5의 배수를 구하면 3,5,6,9이다. 이들의 총합은 23이다.
1000미만의 자연수에서 3,5의 배수의 총합을 구하라
※ 풀이1
1. 1부터 1000중에서 3또는 5로 나누어 나머지가 0인 값을 찾아 더해준다.
※ 소스코딩1
public class Solution {
public static void main(String[] args) {
int num1 = 3;
int num2 = 5;
method1(num1, num2);
}
public static void method1(int num1, int num2){
int sum = 0;
for(int i=1;i<1000;i++){
if(i%num1 ==3 || i%num2 ==0){
sum += i;
}
}
System.out.println("sum : " + sum)
}
}
※ 풀이2
1. 1~1000까지 3의 배수 합을 먼저 구한다.
2. 1~1000까지 다시 5의 배수 합을 구한다.
3과 5의 최소공배수인 15는 제외하고 구해준다.
※ 소스코딩2
public class Solution {
public static void main(String[] args) {
int num1 = 3;
int num2 = 5;
method1(num1, num2);
}
public static void method1(int num1, int num2){
int sum = 0;
int range =1000;
//1. 1~1000 중 3의 배수를 더하여 sum값 구하기
for(int i=1; i*num1 < range; i++){
sum += i*num1;
}
//2. 1~1000 중 5의 배수를 더하여 sum값 구하기
// 단, 3과 5의 최소공배수 15는 제외하고 계산한다
for(int i=1; i*num2 <range;i++){
if( (i*num2)%15 == 0 ) {
continue;
}
sum += i*num2;
}
System.out.println("sum : " + sum)
}
}
소스코딩1의 방식이 소스코딩2의 방식보다 간단해 보이지만 1번 풀이의 경우
1~1000까지 1000번의 반복이 발생하기 때문에 실행시간이 더 오래 걸린다.
참고로 1번풀이의 경우 elpaseTime 은 0.000220s
2번풀이는 0.000048s가 소요된다.
(해당 소요 시간은 변경될 수 있음)
반응형
'알고리즘&코딩테스트 > 코딩테스트' 카테고리의 다른 글
문자열 압축하기 (1) | 2017.09.13 |
---|---|
모스부호 해독 (0) | 2017.09.13 |
문자열의 프린트(출력) 하기 (0) | 2017.09.09 |
Recursio(재귀호출)을 이용한 문자열의 길이 계산 (0) | 2017.09.09 |
특정 숫자의 팩토리얼 구하기(Extra Long Factorials) (0) | 2017.09.08 |