SW 공부노트
[백준] 단계별로 풀어보기 2. 조건문 본문
두 번째 단계인 조건문!
단계별로 풀어보기 2. 조건문(https://www.acmicpc.net/step/4)
2단계는 총 7문제로 구성되어 있다.
1. 두 수 비교하기(1330)
첫 번째 문제는 두 수를 입력받고 두 수를 비교해 부등호를 출력하는 문제이다.
이 문제에서는 Scanner를 통해 사용자에게 입력을 받았다.
if 문을 통해 값 비교 후 상황에 맞는 부등호를 출력하였다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a,b;
a = sc.nextInt();
b = sc.nextInt();
if(a > b)
System.out.print(">");
else if(a < b)
System.out.print("<");
else
System.out.print("==");
sc.close();
}
}
2. 시험 성적(9498)
두 번째 문제는 시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하는 문제이다.
점수 범위를 구분하는 조건문을 작성한 후 범위에 맞는 등급을 출력하였다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a;
a = sc.nextInt();
if(a>=90 && a<= 100)
System.out.print("A");
else if(a>= 80 && a < 90)
System.out.print("B");
else if(a>= 70 && a< 80)
System.out.print("C");
else if(a>= 60 && a< 70)
System.out.print("D");
else
System.out.print("F");
sc.close();
}
}
3. 윤년(2753)
세 번째 문제는 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 문제이다.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
윤년일 때의 조건을 작성하는 것이 이 문제의 핵심인 듯하다.
조건은 크게 두 파트로 나눌 수 있다.
1) 연도가 4의 배수이면서 : a % 4 == 0 &&
2) 100의 배수가 아닐 때 또는 400의 배수일 때 : a % 100 != 0 || a % 400 == 0
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a;
a = sc.nextInt();
if(a%4 == 0 && ( a%100 != 0 || a%400 == 0))
System.out.print("1");
else
System.out.print("0");
sc.close();
}
}
4. 사분면 고르기(14681)
네 번째 문제는 주어진 점이 어느 사분면에 속하는지 알아내는 문제이다.
좌표를 입력하고 좌표에 맞는 사분면을 출력하면 된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a, b;
a = sc.nextInt();
b = sc.nextInt();
if(a>0 && b >0)
System.out.print("1");
else if(a<0 && b >0)
System.out.print("2");
else if(a<0 && b <0)
System.out.print("3");
else if(a>0 && b <0)
System.out.print("4");
sc.close();
}
}
5. 알람 시계(2884)
이번 문제는 입력받은 시간에서 45분 앞서는 시간을 출력하는 문제이다.
a는 hour, b는 minute를 의미한다.
현재 시간이 45분을 넘었는지 확인하는 조건문을 통해 각 상황을 구분해 작성하였다.
45분을 넘었을 경우에는 hour는 건들지 않고 minute에서만 45를 빼주었고,
45분을 넘지 않았을 경우에는 hour - 1, minute - 45 + 60 계산을 해주었다.
추가적으로 시간이 00시 일 경우에는 hour = 23으로 대입해주었다.
더 이해하기 쉽게 작성해야 했는데 너무 대충 작성한 것 같아 아쉽다.
다음엔 더 명확하게 작성해야지!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a, b;
a = sc.nextInt();
b = sc.nextInt();
if(b-45<0) {
if(a == 0)
a=23;
else
a = a-1;
b = 60 +(b-45);
}else
b = b-45;
System.out.print(a +" " + b);
sc.close();
}
}
6. 오븐 시계(2525)
5번 문제에서 더 발전된 형태의 문제로 현재 시간과 타이머값을 입력하면 현재 시간에서 타이머값을 더한 시간을 출력하는 문제이다.
타이머값은 요리하는 데 필요한 시간으로 분 단위로 입력한다.
따라서 타이머값을 60으로 나누어 시간값과 분값을 구분해 더해주었다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
int m = sc.nextInt();
int t = sc.nextInt();
int hour = t / 60;
int min = t % 60;
if(m + min >= 60) {
m = m + min - 60;
h = h + hour + 1;
}else {
h = h + hour;
m = m + min;
}
if(h >= 24)
h = h - 24;
System.out.print(h + " " + m);
sc.close();
}
}
7. 주사위 세개(2480)
마지막 문제는 주사위를 던져 다음 규칙에 따라 상금을 계산하는 문제이다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
세 값이 모두 같을 경우, 두 값만 같을 경우, 세 값 모두 다를 경우에 따른 조건문을 작성한 후
조건에 맞는 수식을 통해 상금을 계산하였다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int prize = 0;
int max = 0;
if(a == b && b == c)
prize = 10000 + 1000 * a;
else if(a == b && a != c)
prize = 1000 + 100 * a;
else if(a == c && a != b)
prize = 1000 + 100 * a;
else if(b == c && b != a)
prize = 1000 + 100 * b;
else if(a != b && b != c && a != c) {
if(a > b && a > c)
max = a;
else if(b > a && b > c)
max = b;
else if(c > a && c > b)
max = c;
prize = max * 100;
}
System.out.print(prize);
sc.close();
}
}
'백준풀이' 카테고리의 다른 글
[백준/자바] 11729: 하노이의 탑 이동 순서 (0) | 2023.05.18 |
---|---|
[백준/자바] 10773번: 제로 (0) | 2023.05.17 |
[백준/자바] 1920번: 수 찾기 (0) | 2023.05.17 |
[백준] 단계별로 풀어보기 3. 반복문 (0) | 2022.07.03 |
[백준] 단계별로 풀어보기 1. 입출력과 사칙연산 (0) | 2022.06.17 |