1~100까지의 숫자에서 3의 배수와 5의 배수의 합은?
단, 공배수(15등)는 한번씩만 더한다.
일명 Fizzbuzz식으로 유명한 알고리즘중 하나이다. (엄밀히 말하면 FizzBuzz는 출력을 하면서 적지만)
//직관적인 첫번째 방법
public class Exercise {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
if (i % 15 != 0) sum += i;
}
}
System.out.println(sum);
}
}
//논리연산자를 이용해 if문을 줄인방법
public class Exercise {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if ((i % 3 == 0 || i % 5 == 0) && i % 15 != 0) sum += i;
}
System.out.println(sum);
}
}
// ^ (xor연산자)를 이용한 방법
public class Exercise {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i ++) {
if (i % 3 == 0 ^ i % 5 == 0) sum += i;
}
System.out.println(sum);
}
}
실제 FizzBuzz도 풀어보자
public class If {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
boolean is3Times = i % 3 == 0;
boolean is5Times = i % 5 == 0;
if (is3Times && is5Times) {
System.out.println("FizzBuzz");
} else if (is3Times) {
System.out.println("Fizz");
} else if (is5Times) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
}
}
조건이 충족하면 밑으로 내려가지않고 종료되는 else ~ if문의 특성만 알고있다면
까다롭지않은 기본적인 알고리즘이라고 생각한다 :)
'Algorithm > Use JAVA' 카테고리의 다른 글
1, 0 행렬처럼 찍기 (0) | 2020.08.13 |
---|---|
int형, IF문만을 이용해 최대값 구하기 (0) | 2020.08.13 |
댓글