Java - 알고리즘

백준 JAVA - 2단계 If 문 활용하기

TerianP 2021. 9. 14.
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 하여 출력하도록 했습니다.

댓글