간단한 예제로 문법 익숙해지기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

지금까지 배운 내용으로 간단한 예제를 작성해보고 Go 언어의 문법을 확실히 익혀보겠습니다.

FizzBuzz 구현하기

FizzBuzz는 매우 간단한 프로그래밍 문제이며 규칙은 다음과 같습니다.

  • 1에서 100까지 출력
  • 3의 배수는 Fizz 출력
  • 5의 배수는 Buzz 출력
  • 3과 5의 공배수는 FizzBuzz 출력

해답을 보지 않고 Go 언어로 FizzBuzz 문제를 풀어보기 바랍니다. for 반복문으로 1부터 100까지 출력하면서 숫자가 각 조건에 해당할 때 Fizz, Buzz, FizzBuzz를 출력하면 됩니다.

package main

import "fmt"

func main() {
	for i := 1; i <= 100; i++ {
		switch {                         // case에 조건식을 지정했으므로 판단할 변수는 생략
		case i%3 == 0 && i%5 == 0:       // 3의 배수이면서 5의 배수일 때
			fmt.Println("FizzBuzz")  // FizzBuzz 출력
		case i%3 == 0:                   // 3의 배수일 때
			fmt.Println("Fizz")      // Fizz 출력
		case i%5 == 0:                   // 5의 배수일 때
			fmt.Println("Buzz")      // Buzz 출력
		default:                         // 아무 조건에도 해당하지 않을 때
			fmt.Println(i)           // 숫자 출력
		}
	}
}

구현 방법은 여러 가지가 있지만 여기서는 switch 분기문에 조건식을 설정하여 구현했습니다. 각 수에서 % (나머지 연산자)를 사용하여 0이 나오면 해당 숫자의 배수가 됩니다. 그리고 i%3 == 0 && i%5 == 0과 같이 3의 배수일 때와 5의 배수일 때에 모두 해당하면 3과 5의 공배수가 됩니다.

여기서 주의할 점은 i%3 == 0 && i%5 == 0을 맨 처음에 설정해주어야 합니다. 만약 i%3 == 0이나 i%5 == 0을 먼저 설정하면 3의 배수이거나 5의 배수일 때 Fizz와 Buzz를 먼저 출력한 뒤 switch가 끝나버립니다. 따라서 3과 5의 공배수는 처리할 수 없게 됩니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

01 June 2015