IF 문 문제에 속하는 윤년 문제와 알람시계 문제
다른 IF문 문제들은 난이도가 비교적 평이한 편이었는데 두 문제만 조금 헷갈렸어서 남겨본다.
2753. 윤년구하기
문제 및 조건:
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램 만들기
윤년은 연도가 "4의 배수"이면서 1) 100의 배수가 아님 또는 2) 400의 배수 조건을 충족시켜야 한다.
1. 연도를 입력할 스캐너와 변수 선언
2. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수
(i>=1 && i<=4000)
3. 연도가 1)4의 배수이면서 100의 배수가 아닐때 2)4의 배수이면서 400의 배수일때 3)그 외 의 세가지 조건을 구해야 한다.
-1)4의 배수이면서 100의 배수가 아닐때 "1" 출력
=> i를 4로 나눈 수가 0이고, 100으로 나눈 수는 0이 아니어야 한다.
=> if(i%4==0 && i%100 !=0) System.out.println("1");
-2) 1의 조건을 만족하지 않고 4의 배수이면서 400의 배수일때
=> i를 4로 나눈 수가 0이고, 400으로 나눈 수도 0이어야 한다.
=> else if(i%4==0 && i%400 ==0) System.out.println("1");
-3) 위의 두 조건 중 무엇도 만족시키지 못할때
=> System.out.println("0");
(정답)
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int i;
i=sc.nextInt();
if(i>=1 && i<=4000) {
if (i%4==0 && i%100!=0)
System.out.println("1");
else if(i%4==0 && i%400==0)
System.out.println("1");
else
System.out.println("0");
}
sc.close();
}
}
2884. 알람시계
이 문제는 사실.. 내가 푼 방법이 정석의 풀이 방법은 아니다. 약간 꼼수로 푼건데 다른 풀이방법도 다시 찾아보고 공부해야 할 듯함 ㅠㅠ
문제 및 조건:
내가 입력하는 시간보다 "45분 일찍" 알람이 설정되도록 하기
1. 시간 입력할 스캐너와 변수 선언
2. 45분 일찍 알람을 설정한다고 할때 1)입력한 분이 45분보다 작은 경우 2)입력한 분이 45분보다 큰 경우 로 나누어 구한다.
-1)입력한 분이 45분보다 작은 경우
==> 입력한 분이 45분보다 작은 경우 45분 일찍 설정하면 앞의 시간이 -1 된다.
==> 예를 들어 10시 10분을 입력했을 경우, 알람 시각은 (10-1)시 (60-(45-10))분이 된다. 그리고, h가 0으로 입력됐을 경우 -1을 하면 23이 되어야 한다.
==> if(m<45){h--; m=60-(45-m); if(h==0) {h=23;} System.out.println(h+" "+m); }
-2)입력한 분이 45분보다 큰 경우
==> 입력한 분이 45분보다 큰 경우 분에서 45를 빼기만 하면 된다.
==> else {System.out.println(h+" "+(m-45)); }
(정답)
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int h, m;
h=sc.nextInt();
m=sc.nextInt();
if(m<45){
h--;
m=60-(45-m);
if(h==0){
h=23;
}
System.out.println(h+" "+m);
}
else{
System.out.println(h+" "+(m-45));
}
sc.close();
}
}
'{"CODING": undefind}; > ALGORITHM' 카테고리의 다른 글
백준 10171, 10172(고양이, 개) (0) | 2021.03.04 |
---|---|
백준 1546 (평균) 자바 (0) | 2021.03.02 |
백준 1110 (더하기 사이클) (0) | 2021.03.01 |
백준 10818( 최소, 최대 ) (0) | 2021.02.27 |
A+B를 출력하는 모든 방법(백준1000,2558,10950,10951,10952,11021,11022,15552) (0) | 2021.02.26 |