loading
본문 바로가기
Algorithm/Use JAVA

FizzBuzz 및 같은 방법으로 배수의 합 구하기

by pikiforyou 2020. 8. 13.

 

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

댓글