백준 1924번 문제 (브론즈 1)
https://www.acmicpc.net/problem/1924
조건
x, y값을 입력 받고 해당 날짜의 요일을 출력한다. (1월 1일은 월요일)
접근
- 입력받은 y일에 x월 전까지의 날짜를 합하여 계산하였다.(누적합)
ex) 2월 1일의 경우, 1월의 일 수 31일 다음인 32일째이다.
1-1. 그러기 위해 각 월별로 일 수를 배열에 저장해 놓았다.
- 요일을 구하기 위해 7로 나누어 나머지로 판별했다.
코드
두가지 방식(switch case 구문, 배열 인덱스로 접근)으로 문제를 풀었다.
1. switch case 구문 활용
import java.util.*;
public class Main {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
//총 일수를 구하기 위해 각 월의 일 수를 배열로 저장
int [] dayList = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
int month = sc.nextInt();
int daySum = sc.nextInt();
//입력받은 month의 직전 month까지 일 수를 더하는 구문
for(int i = 0; i < month-1; i++){
daySum += dayList[i];
}
//요일을 구하기 위해 7로 나눈 나머지 저장
int calcDay = daySum % 7;
switch(calcDay){
case 0:
System.out.println("SUN");
break;
case 1:
System.out.println("MON");
break;
case 2:
System.out.println("TUE");
break;
case 3:
System.out.println("WED");
break;
case 4:
System.out.println("THU");
break;
case 5:
System.out.println("FRI");
break;
case 6:
System.out.println("SAT");
break;
}
}
}
2. 요일을 저장한 배열 활용, 인덱스로 접근
import java.util.*;
public class Main {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
int [] dayList = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
String [] dayOfWeek = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
int month = sc.nextInt();
int daySum = sc.nextInt();
for(int i = 0; i < month-1; i++){
daySum += dayList[i];
}
int calcDay = daySum % 7;
System.out.println(dayOfWeek[calcDay]);
}
}
결과
| 메모리 | 시간 | 코드 길이 | |
| switch-case | 17732 KB | 172 ms | 1035 B |
| 배열 인덱스 접근 | 17716 KB | 172 ms | 527 B |
'백준 > Java' 카테고리의 다른 글
| [JAVA] 소수 구하기 - 에라토스테네스의 체 (0) | 2025.05.02 |
|---|---|
| [JAVA] 백준 2839번 설탕 배달 - 모든 풀이법 (그리디, DP, BFS, 완전탐색, 시간 복잡도 O(1)) (0) | 2025.03.27 |
| [JAVA] 입력 받은 숫자의 개수 구하기(정렬, 이분 탐색, HashMap, TreeMap) (1) | 2025.03.20 |
| [JAVA] 많은 수를 효율적으로 오름차순 정렬해 입출력하기. (1) | 2025.03.05 |
| [JAVA] 문자열에서 모음 개수 구하기 (0) | 2025.02.27 |