[백준] 2753번, 14681번, 2884번, 2525번, 2480번 (Java)

vector13·2022년 6월 21일
0

백준

목록 보기
6/15

2753번 윤년

import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = 0;
        if((a % 4 == 0 && a % 100 != 0) || a % 400 == 0){
            b = 1;
        }
        System.out.println(b);
    }
}

14681번 사분면 고르기

점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램

import java.util.Scanner;
public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        System.out.print((x > 0 && y > 0)?1 : (x < 0 && y > 0)?2 : (x < 0 && y < 0)?3 : (x > 0 && y < 0)?4 : 0);
        
    }
}

삼항연산자를 사용할 때는 (조건문)?참 : 거짓 의 형태이기 때문에
거짓일 때를 꼭 넣어줘야함
(x > 0 && y > 0)?1 : (x < 0 && y > 0)?2 : (x < 0 && y < 0)?3 : (x > 0 && y < 0)?4 만 넣으면 안되고
(x > 0 && y > 0)?1 : (x < 0 && y > 0)?2 : (x < 0 && y < 0)?3 : (x > 0 && y < 0)?4 : 0 까지 넣어야함

안지키면 컴파일 에러~~~ 😐

2884번 알람시계

import java.util.Scanner;
public class Main {
    public static void main(String args[]){ 
        Scanner sc = new Scanner(System.in);
        int h = sc.nextInt();
        int m = sc.nextInt();
       
        if( m < 45 ){
            if ( h == 0){
                h = 24;
            }
            h--; 
            m += 15;
        }else { m -= 45;}
        System.out.println(h + " " + m);
    }
}

중첩 if 문이 싫다면 삼항연산자로 바꿔서

import java.util.Scanner;
public class Main {
    public static void main(String args[]){ 
        Scanner sc = new Scanner(System.in);
        int h = sc.nextInt();
        int m = sc.nextInt();
       
        if( m < 45 ){
            h = h == 0 ? 24 : h;            
            h--; 
            m += 15;
        }else { m -= 45;}
        System.out.println(h + " " + m);
    }
}

정답이라고 나오긴 했는데 좀 가독성 떨어지는거같음 ㅎㅂㅎ

2525번 오븐 시계

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램

import java.util.Scanner;
public class Main {
    public static void main(String args[]){ 
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        
        a += c/60;
        b += c%60; 
        
        if(b > 60){
            a++;
            b -= 60;
        }
        
        a = a >= 24 ? a-24 : a;
        System.out.println(a + " " + b);
        
    }
}

로 했는데 틀렸다

b 조건문에 > 가 아니라 >= 로 넣어야하기 때문임

import java.util.Scanner;
public class Main {
    public static void main(String args[]){ 
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        
        a += c/60;
        b += c%60; 
        
        if(b >= 60){
            a++;
            b -= 60;
        }
        
        a = a >= 24 ? a-24 : a;
        System.out.println(a + " " + b);
        
    }
}

로 바꿔서 정답

2480번 주사위 세개

3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램

간단하게 만드는 방법 찾고싶은데 아이디어가 안떠오름

import java.util.Scanner;
public class Main {
    public static void main(String args[]){ 
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int p = 0; 
        if (a < b){
            p = (b<c)? c*100 : (b==c)? (1000 + c*100) : (a == c)? (1000 + c*100) : (b>c)? (b*100) : p ;
        } else if( a == b ){
            p = (b ==c)? (10000 + 1000*a) : (b>c)? (1000 + a*100) : (b<c)?(1000 + a*100) : p;
           
        } else {
            p = (b > c)? (a*100) : (b==c)? (1000 + c*100) : (a==c)? (1000 + c*100) : p;               
            if (b<c) {
                p = (a>c)?(a*100) : (a==c)?(1000 + c*100) : (a<c)?(c*100) : p;
            }
        }
        
    }
}

음 틀렸다.
내가 봐도 복잡하게 쓰긴했다

구글링을 통해서 Math의 max 함수를 사용한다는 힌트를 얻었다.

import java.util.Scanner;
public class Main {
    public static void main(String args[]){ 
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int p = 0; 
        if (a == b && b == c) {
            p = 10000 + 1000*a ;
        } else if (a == b || b == c) {
            p = 1000 + b*100;
        } else if ( a == c ){
            p = 1000 + a*100;            
        } else { p = Math.max(Math.max(a,b),c)*100 ; }
        System.out.println(p);
    }
}

2단계 깨기 완료!! 야호~ 🐣

profile
HelloWorld! 같은 실수를 반복하지 말기위해 적어두자..

0개의 댓글