1. 문제

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() 
{
	unsigned dice1, dice2, dice3;
	scanf("%u %u %u", &dice1, &dice2, &dice3);

	// 1. 같은 눈이 3개 나올 경우
	if ((dice1 == dice2) && (dice2 == dice3))
	{
		printf("%u", 10000 + dice1 * 1000);
	}
	// 2. 모두 다른 눈이 나오는 경우
	else if ((dice1 != dice2) && (dice1 != dice3) && (dice2 != dice3))
	{
		// 오름 차순으로 가장 큰수 선택
		unsigned dice_arr[3] = { dice1, dice2, dice3 };
		int i = 0;
		while (i < 2)
		{
			if (dice_arr[i] > dice_arr[i + 1])
			{
				int temp = dice_arr[i];
				dice_arr[i] = dice_arr[i + 1];
				dice_arr[i + 1] = temp;
			}
			i++;
		}
		printf("%u", 100* dice_arr[2]);
	}
	// 3. 같은 눈이 2개만 나오는 경우
	else 
	{
		if (dice1 == dice2)
			printf("%u", 1000 + 100 * dice1);
		else if (dice2 == dice3)
			printf("%u", 1000 + 100 * dice2);
		else
			printf("%u", 1000 + 100 * dice1);
	}
	return 0;
}

 

2. 해결 방법

1. 모두 다른 눈에서 가장 큰 수 선택 -> 자료구조 : 오름차순

2. 같은 눈이 2개만 동일 할 때, 같은 수 선택 -> dice1, dice2, dice3 모두 비교

 

✅ 너무 복잡하게 풀어서 맘에 들지 않음.

'BACKJOON, 백준' 카테고리의 다른 글

백준 2566번 최대값 초기 설정  (0) 2023.12.04
백준 10951번 중복 숫자  (0) 2023.11.18
백준 10951번 EOF  (0) 2023.11.15
백준 2525번 오븐 시계  (0) 2023.11.14
백준 11382번 꼬마 정민  (0) 2023.11.14

+ Recent posts