문제
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개의 눈이 빈칸을 사이에 두고 각각 주어진다.
출력
첫째 줄에 게임의 상금을 출력 한다.
출처
Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2010 > 중등부 1번
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
int max = a;
if(max < b)
max = b;
if(max < c)
max = c;
if(a==b && b == c){
System.out.println(10000+a*1000);
}else if(a == b && a != c)
System.out.println(1000+a*100);
else if(a == c && a != b)
System.out.println(1000+a*100);
else if(b == c && b != a)
System.out.println(1000+b*100);
else
System.out.println(max * 100);
}
}
오늘 가져온 문제는 주사위 세개라는 문제이며, 한국 정보올림피아드의 중등부 문제입니다. 굉장히 쉬운 문제라고 할 수 있죠, 코딩테스트에서는 이런 문제 안 내주나 모르겠습니다. 이런거 내도 떨어지는 사람은 많을것 같은데.. ㅎㅎ 아무튼.. 이번에는 특별히 JAVA 로 풀어봤던 것 같습니다. 아니면 저때 JAVA를 살짝 공부했던지 아무튼, 요즘에는 자바를 사용 안 해서 새롭기는 한데요. 단순하게 계산하는 문제이니 설명은 딱히 하지 않겠습니다.
알고리즘을 처음 공부하시는 분들께서는 한국 올림피아드 문제 초등부부터 중등부 까지 문제들을 집중 공략하면서 서서히 실력을 쌓아가시는 것이 좋습니다. 솔직히 쉬운 문제도 있지만, 마지막 번호대로 갈 수록 어려운 문제도 등장하고 그리드 알고리즘이라든지 다이나믹 프로그래밍이라든지 기초의 수준에서 문제들을 풀어볼 기회가 많기 때문에 추천을 드립니다. 이상 DiarLit 이었습니다!