https://school.programmers.co.kr/learn/courses/30/lessons/12901
문제
- 2016년 1월 1일은 금요일입니다.
- 2016년 a월 b일은 무슨 요일일까요?
- 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.
- 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다.
- 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
제한사항
- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
입출력 예제
설계과정
1. 입력받은 월까지 해당하는 전체 일 수를 구한다.
2. 전체 일 수를 7로 나눠서 그에 맞는 요일을 출력한다.
풀이과정
1. 요일과 각 월에 해당하는 전체 일 수를 각각 배열로 저장한다.
- 요일 : FRI, SAT, SUN .. 등을 string으로 배열에 저장한다.
- 일 : 31, 29, 30 ... 등 각 월에 해당하는 전체 일자를 int 배에 저장한다.
2. for문을 통해서 입력받은 월의 바로 전까지에 해당하는 전체 일자를 합산한다.
- 배열에 순차적으로 각 월에 해당하는 일자를 저장해놓았기에 가능하다.
3. 그 후에 입력받은 일자를 더해서 총 일자를 구한다.
- 인덱스는 0부터지만 일자는 1부터 시작하므로 입력받은 일자에서 1을 빼야 정상 결과가 출력된다.
4. 합산 일자를 7로 나눈 나머지를 배열의 인덱스로 잡아서 결과를 출력한다.
- 요일을 출력하는 배열의 크기가 7이므로 그로 나눠서 인덱스에 맞는 요일을 출력한다.
답안소스
- 프로그래머스
class Solution {
public String solution(int a, int b) {
String answer = "";
String[] week = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
int[] date = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int sumDate = 0;
for(int i = 0; i < a-1; i++) {
sumDate += date[i];
}
sumDate += b - 1;
answer = week[sumDate % 7];
return answer;
}
}
- 이클립스
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String answer = "";
String[] week = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
int[] date = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int month = Integer.parseInt(st.nextToken());
int day = Integer.parseInt(st.nextToken());
int sumDate= 0;
for(int i=0; i<month-1; i++) {
sumDate += date[i];
}
sumDate += day - 1;
answer = week[sumDate % 7];
System.out.println(answer);
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]Lv.1 약수의 합 (0) | 2023.03.27 |
---|---|
[프로그래머스]Lv.1 가운데 글자 가져오기 (0) | 2023.03.16 |
[프로그래머스]Lv.1 폰켓몬 (0) | 2023.03.10 |
[프로그래머스]Lv.1 없는 숫자 더하기 (0) | 2022.11.24 |
[프로그래머스]Lv.1 과일 장수 (0) | 2022.11.23 |