티스토리 뷰
1. 문제에서 물어보는 핵심 역량
이 문제는 조건문의 조건을 제대로 찾을 수 있는지 물어보는 것이며
조건을 만드는 방법을 알고 있다면 응용해서 풀 수 있는 문제입니다. 저는 처음에 이 문제를 풀 때 복잡하게
생각해서 풀었지만 역시 코딩은 심플하게 풀어내는 것이 좋은 코드라고 할 수 있습니다.
그래서 단순 반복으로 풀어 보았습니다.
2. 문제 내용
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈) ×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈) ×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈) ×100원의 상금을 받게 된다.
예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3 ×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2 ×1,000으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6 ×100으로 계산되어 600원을 상금으로 받게 된다.
3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
입력
첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
출력
첫째 줄에 게임의 상금을 출력 한다.
3. 문제풀이
우선, 처음으로 3개의 숫자가 같을 경우부터 조건을 비교해 주고
2개, 1개 순으로 비교해서 문제를 풀이했습니다.
a, b, c로 나뉜 숫자를 a와 b가 같은 때, b와 c도 같다면이라는 조건을 만들어 줍니다.
그 후 계산식을 넣어주고 2개일 경우 조건에 안 걸려서 내려왔을 테니 3번을 각각 비교하여 조건을 작성합니다.
마지막으로 예외 부분을 a, b, c 각각 클 경우를 조건에 넣어서 풀어줍니다.
아래 각 줄에 주석을 함께 작성하였으니 편하게 보시길 바랍니다.
using System;
using static System.Console; //이렇게 해두면 Console을 적어두지 않아도 편하게 사용가능하다.
namespace leepick
{
internal class lpProgram
{
static void Main(string[] args)
{
//값을 받아서 문자열 배열에 나눠서 넣어주기
string[] input = ReadLine().Split();
//주사위의 숫자를 변환해 저장해준다
int a = int.Parse(input[0]);
int b = int.Parse(input[1]);
int c = int.Parse(input[2]);
//3개의 수가 같을 경우
if (a == b && b == c)
{
WriteLine(10000 + a * 1000);
}
//2개의 수가 같을 경우
else if (a == b)
{
WriteLine(1000 + a * 100);
}
//2개의 수가 같을 경우
else if (b == c)
{
WriteLine(1000 + b * 100);
}
//2개의 수가 같을 경우
else if (a == c)
{
WriteLine(1000 + a * 100);
}
//모두 다른 수일 경우
else
{
//a가 제일 클때
if (a > b && a > c)
{
WriteLine(a * 100);
}
//a가 제일 큰 수가 아니어서 내려왔으니 b가 클 경우
else if (b > c)
{
WriteLine(b * 100);
}
//c가 제일 클 경우
else
{
WriteLine(c * 100);
}
}
}
}
}
4. 코드 작성의 꿀팁
나중에 현업에서 주로 팀으로 작업해서 다른 사람의 코드를 보는 경우도 많기 때문에
누가, 언제 작성한 코드인지 주석으로 표시해 두는 습관을 들여두면 아주 좋습니다.
물론 코드의 역할도 포함해서 말이죠.
ex)
//20200223 lepick 캐릭터의 이동을 담당
//================코드 내용=============
조건을 짜기 전, 기획서를 보고 한글주석으로 미리 코드를 작성해 보는 것도 아주 좋은 습관입니다.
이걸 유사코드라고 하는데요.
ex)
//캐릭터가 이동하고 싶다.
//필요속성 : 속도, 입력키, 방향
//w키를 누를때 앞방향으로 2의 속도로 이동하고 싶다.
이것처럼 미리 한글로 작성하고 이걸 코드로 변환하는 작업이 필요합니다.
복잡한 코드를 작성할 때 특히 도움이 많이 되는 방법입니다.
'알고리즘 문제풀이' 카테고리의 다른 글
백준 알고리즘 (C#/1330번) 쉽게 풀어보기 (0) | 2024.01.15 |
---|---|
백준 알고리즘 (C#/1000번) 쉽게 풀기 (0) | 2024.01.15 |
백준 알고리즘 (C#/2557번) 쉽게 이해하기 (0) | 2024.01.15 |