728x90
오늘은 백준 if문 문제를 풀어보았습니다.
문제 번호는 1330, 9498, 2753, 14681, 2884 번입니다.
package day9;
import java.util.Scanner;
public class Q9 {
public static void main(String[] args) {
Q_1330();
Q_9498();
Q_2753();
Q_14681();
Q_2884();
}
static void Q_1330() {
// if 기본
Scanner scan = new Scanner(System.in);
int A = scan.nextInt();
int B = scan.nextInt();
if(-10000<=A && A<=10000 && -10000<=B && B<=10000) {
if(A>B) {
System.out.println(">");
}else if(A<B) {
System.out.println("<");
}else if(A==B) {
System.out.println("==");
}
}else {
System.out.println("출력 불가");
}
}
static void Q_9498() {
// 성적 구현
Scanner scan = new Scanner(System.in);
int score = scan.nextInt();
if(90<=score && score <=100) {
System.out.println("A");
}else if(80<=score && score <=89) {
System.out.println("B");
}else if(70<=score && score <=79) {
System.out.println("C");
}else if(60<=score && score <= 69) {
System.out.println("D");
}else {
System.out.println("F");
}
}
static void Q_2753() {
// 윤년 구현
Scanner scan = new Scanner(System.in);
int year = scan.nextInt();
if(1<=year && year<=4000) {
if(year%4==0 && year%100 !=0 || year%400 == 0) {
System.out.println("1");
}else {
System.out.println("0");
}
}
}
static void Q_14681() {
// 사분면 찾기
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int y = scan.nextInt();
if((x !=0 && 0<x && x<=1000) && (y!=0 && 0<y && y<=1000)) {
System.out.println("1");
}else if((x!=0 && x<0 && x>=-1000) && (y!=0 && 0<y && y<=1000)){
System.out.println("2");
}else if((x!=0 && x<0 && x>=-1000) && (0>y && y!=0 && y>=-1000)) {
System.out.println("3");
}else if((x!=0 && 0<x && x<=1000) && (y!=0 && 0>y && y>=-1000)) {
System.out.println("4");
}
}
static void Q_2884() {
// 시간 덧셈 뺏셈
Scanner scan = new Scanner(System.in);
int H = scan.nextInt(); // 시간
int M = scan.nextInt(); // 분
if((0<=H && H<=23) && (0<=M && M<=59)) {
if(H-1>=0 && M-45>=0) {
System.out.printf("%d %d", H , M-45);
}else if(H-1>=0 && M-45<0) {
System.out.printf("%d %d", H-1 , M+15); // M-45 했을때 음수값을 갖는 경우 H에서는 -1 , M에서는 +15를 하게 됩니다
}else if(H-1<0 && M-45<0) { // M이 음수값을 갖고 H도 음수값을 갖는 경우(0시 15분) 0은 시간상 24시로 생각하여 24-1 을 출력값으로 잡았습니다
System.out.printf("%d %d", 24-1 , M+15);
}else if(H==0 && M-45>=0) { // 여기서 한번 막혔었는데, H 가 0이고 M 은 45 이상이라 단순히 뺏셈만 하면 되는 경우를 확인하여 따로 잡아주었습니다
System.out.printf("%d %d", H, M-45);
}
}
}
}
맨 마지막 문제(Q 2884)는 아래와 같이 세가지 부분에서 생각하며 풀었습니다.
1. M-45 했을 때 음수값인 경우 H-1 하고 M+15 하여 출력합니다. 이는 분에서 -45분 했을 때 시간은 그대로 -1해주면 되는데 분은 해당 시간에서 +15하면 결과적으로는 M-45한 값이 나오기 때문입니다.
2. H-1 했을 때 음수값인 경우는 사실 H 가 0인 경우 밖에 없기 때문에 출력은 24-1 을 하도록 만들었습니다. 이는 0시가 곧 24시간 표현으로 24이기 때문입니다.
3. 마지막 부분에서는 살짝...막혔었습니다. 처음에는 else if 문 3줄만 쓰고 돌렸을 때 실패가 나왔는데, 확인해보니까 H(시간)을 0 이고 M>=45 인 경우 출력이 안되는 문제가 있었습니다. 이에 else if 문 하나를 더 넣어서 시시간은 0 이고, M>=45 인 경우 시간은 그대로 출력해주고, M-45 하여 출력하도록 했습니다.
'Java - 알고리즘' 카테고리의 다른 글
백준 Java - 4단계 1차원 배열 활용하기(2) : 3052번, 1546번 (0) | 2021.10.20 |
---|---|
백준 JAVA - 4단계 1차원 배열 활용하기(1) (0) | 2021.10.15 |
백준 JAVA - 3단계 for 활용하기 (2) (feat. 별 찍기, x보다 작은 수) (0) | 2021.10.08 |
백준 JAVA - 3단계 for 활용하기 (1) (feat.Buffer, StringTokenizer, String.split 사용) (0) | 2021.09.29 |
백준 Java - 1단계 입출력과 사칙연산 (0) | 2021.09.06 |
댓글