[Java] 조건문과 반복문을 이용한 간단한 알고리즘 정리 - 1

윤년 계산기와 주사위 게임 두 가지 알고리즘 문제를 for문을 이용해 풀어봤습니다. 윤년 계산기는 입력받은 연도가 윤년인지 판단하고, 주사위 게임은 주사위를 세 번 굴려 나온 값에 따라 상금을 계산합니다. 이 문제들을 통해 자바에서의 조건문을 이용한 문제 해결 방법을 익힐 수 있습니다.
Jan 04, 2024
[Java] 조건문과 반복문을 이용한 간단한 알고리즘 정리 - 1

[윤년 계산기]

윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.

  1. 연도를 입력 받는다.
  1. 입력받은 연도가 윤년이면 "윤년입니다."를 출력
  1. 윤년이 아니라면 "윤년이 아닙니다."를 출력

LeafYearCalculator.java

package ch4; import java.util.*; public class YearCalculator { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("년도를 입력해주세요. -> "); int year = scan.nextInt(); if(year%4==0) { if(year%1000!=0 || year%400==0) { System.out.println(year+"년은 윤년입니다."); }else { System.out.println(year+"년은 윤년이 아닙니다."); } }else { System.out.println(year+"년은 윤년이 아닙니다."); } } }
 

핵심 키워드

  • 문제에서 제공하는 AND 조건과 OR 조건을 만족하도록 이중 if문을 이용해 코드를 작성한다.
 

[주사위 게임]

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번 굴려 나온 값을 각각 차례대로 출력하고, 마지막 주사위 값이 출력되면 즉시 상금을 계산하는 프로그램을 작성 하시오.

  • 참고) 1~6 사이의 랜덤 값 얻기 : (int)(Math.random() * 6 +1)

출력 예>
첫 번째 주사위를 굴리시겠습니까? -> [enter] 첫 번째 주사위 값 : [숫자] 두 번째 주사위를 굴리시겠습니까? -> [enter] 두 번째 주사위 값 : [숫자] 세 번째 주사위를 굴리시겠습니까? -> [enter] 세 번째 주사위 값 : [숫자]
총 상금은 [액수]입니다.

DiceGame.java

package ch4; import java.util.*; public class DiceGame { public static void main(String[] args) { int prize = 0; int maxDice = 0; Scanner scan = new Scanner(System.in); System.out.printf("첫 번째 주사위를 굴리시겠습니까? -> "); scan.nextLine(); int dice1 = (int) (Math.random() * 6) + 1; // Math.random에 괄호를 붙이지 않으면 int로 형 변환시 0이 반환된다. System.out.println("첫 번째 주사위 값 : [" + dice1 + "]"); System.out.printf("두 번째 주사위를 굴리시겠습니까? -> "); scan.nextLine(); int dice2 = (int) (Math.random() * 6) + 1; System.out.println("두 번째 주사위 값 : [" + dice2 + "]"); System.out.printf("세 번째 주사위를 굴리시겠습니까? -> "); scan.nextLine(); int dice3 = (int) (Math.random() * 6) + 1; System.out.println("세 번째 주사위 값 : [" + dice3 + "]"); if (dice1 == dice2 && dice2 == dice3 && dice1 == dice3) { prize = 10000 + dice1 * 1000; } else if (dice1 != dice2 && dice2 != dice3 && dice1 != dice3) { prize = (Math.max(dice1, (Math.max(dice2, dice3)) * 100)); } else { if (dice1 == dice2) { maxDice = dice1; } else if (dice2 == dice3) { maxDice = dice2; } else { maxDice = dice1; } prize = 1000 + maxDice * 100; } System.out.printf("총 상금은 [" + prize + "] 입니다."); } }
 

핵심 키워드

  • 문제에서 제공하는 AND 조건과 OR 조건을 만족하도록 if문을 이용해 코드를 작성한다.
  • 실행 순서에 따라 마지막 조건까지 값이 잘 전달되도록 else if문을 구성한다.
 

결론

해당 문제들을 풀면서 자바에서의 조건문을 이용한 문제를 익혀볼 수 있었다.
 
Share article

More articles

See more posts
RSSPowered by inblog