티스토리 뷰

2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
https://www.acmicpc.net/problem/2480
#include <stdio.h>

int main()
{
	int A, B, C;
	scanf("%d%d%d", &A, &B, &C);

	if (A == B)
	{
		if (B == C)
		{
			A = 10000 + A * 1000;
			printf("%d",A);
		}

		else
		{
			A = 1000 + A * 100;
			printf("%d", A);
		}
	}

	else
	{
		if (B == C)
		{
			B = 1000 + B * 100;
			printf("%d", B);
		}

		else if (A == C)
		{
			A = 1000 + A * 100;
			printf("%d", A);
		}

		else
		{
			if (A > B && A > C)
			{
				A *= 100;
				printf("%d", A);
			}

			else if (B > A && B > C)
			{
				B *= 100;
				printf("%d", B);
			}

			else
			{
				C *= 100;
				printf("%d", C);
			}
		}
	}
}
메모리 (KB)시간 (ms)코드 길이 (B)
11120615

📕 오답 노트

#include <stdio.h>

int main()
{
	int A, B, C;
	scanf("%d%d%d", &A, &B, &C);

	if (A == B)
	{
		if (B == C)
		{
			A = 10000 + A * 1000;
			printf("%d",A);
		}

		else
		{
			A = 1000 + A * 100;
			printf("%d", A);
		}
	}

	else // (A!=B)
	{
		if (B == C)
		{
			B = 1000 + B * 100;
			printf("%d", B);
		}

		else // 모두 다 다름
		{
			if (A > B && A > C)
			{
				A *= 100;
				printf("%d", A);
			}

			else if (B > A && B > C)
			{
				B *= 100;
				printf("%d", B);
			}

			else
			{
				C *= 100;
				printf("%d", C);
			}
		}
	}
}
#include <stdio.h>

int main()
{
	int A, B, C;
	scanf("%d%d%d", &A, &B, &C);

	if (A == B && B == C)
	{
		int temp = 10000 + A * 1000;
		printf("%d", temp);
	}

	else 
	{
		if (A != B == C && A == B != C && A == C != B)
		{
			if (A == B)
			{
				int temp = 1000 + A * 100;
				printf("%d", temp);
			}

			else if (B == C)
			{
				int temp = 1000 + B * 100;
				printf("%d", temp);
			}

			else
			{
				int temp = 1000 + C * 100;
				printf("%d", temp);
			}
		}

		else
		{
			if (A > B)
			{
				if (A > C)
				{
					printf("%d", A * 100);
				}

				else
				{
					printf("%d", C * 100);
				}
			}

			else // (B > A)
			{
				if (B > C)
				{
					printf("%d", B * 100);
				}
			}
		}
	}
}

틀린 코드

모든 경우를 다 넣은 줄 알았지만…

// ... 위 내용 생략	

else // (A!=B)
	{
		if (B == C)
		{
			B = 1000 + B * 100;
			printf("%d", B);
		}

		else if (A == C)
		{
			A = 1000 + A * 100;
			printf("%d", A);
		}

A != B일 때 A == C인 경우를 넣어주지 않아서였다… 이런 건 그림을 그려보면 훨씬 쉽게 확인할 수 있으니 코드로만 접근하지 않고 그림을 그려보도록 하자!


Uploaded by N2T

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
링크
Total
Today
Yesterday