티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 2480번 주사위 세개

https://www.acmicpc.net/problem/2480

 

2480번: 주사위 세개

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

1부터 6까지 눈을 가진 3개 주사위를 던져서 다음과 같은 규칙으로 받는 상금을 출력

  1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 
  2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 
  3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다. 

 

2. 풀이

문제에서 주어진 조건에 맞게 순서대로 if ~ else if ~ else 문을 사용해 구현했습니다.

난이도가 높지 않은 문제라 최대한 직관적으로 조건을 처리했습니다.

 

반복하는 구문이 많아 고민해서 리팩토링하려다가

가성비가 안 나오는 것 같아서 적당히 타협하고 제출했습니다. 

 

3. 코드

#include <stdio.h>

int main() {
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);

	int prize;

	if (a == b && b == c) {
		prize = 10000 + a * 1000;
	}
	else if (a == b) {
		prize = 1000 + a * 100;
	}
	else if (b == c) {
		prize = 1000 + b * 100;
	}
	else if (c == a) {
		prize = 1000 + c * 100;
	}
	else {
		int max = a;
		if (b > max) max = b;
		if (c > max) max = c;

		prize = max * 100;
	}

	printf("%d\n", prize);
	return 0;
}

* prize 변수를 선언하지 않고 if 문 내에서 바로 출력해도 됩니다. [ex. printf("%d\n", 10000 + a * 1000);]

728x90
반응형
댓글