잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).
여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.
감사합니다. -현록
현록의 기록저장소
[Lv1] 2016년 본문
https://programmers.co.kr/learn/challenges
문제 설명
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일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
5 | 24 | "TUE" |
현재 1월 1일 금요일이다.
2016년의 2월은 29일까지 있다.
public String solution(int a, int b) {
String[] answerarr = new String[] {"SUN","MON","TUE","WED","THU","FRI","SAT"};
int[] monthend = new int[] {31,29,31,30,31,30,31,31,30,31,30,31};
int days = 0;
for(int i=0;i<a-1;i++) {
days += monthend[i];
}
days += (b-1);
days += 5;
days %= 7;
return answerarr[days];
}
a월 이전까지 매달 마지막 날짜의 수를 더한다.
나머지 (b-1)만큼 더해준다.(오늘이 0일이 아니라 1일이니까)
days가 0(1월 1일)일 때 금요일이어야 하는데, 금요일이 answerarr[5]이므로,
days에 5를 더해준다. (아니면 배열을{"FRI","SAT","SUN","MON","TUE","WED","THU"}순으로 하든가)
days에 7을 나눈 나머지로 몇 번째인지 알 수 있다.
'Problem Solving > programmers' 카테고리의 다른 글
[Lv2] 스킬트리 (0) | 2019.04.11 |
---|---|
[Lv2] 주식가격 (0) | 2019.04.10 |
[Lv1] 최대공약수와 최소공배수 (0) | 2019.04.10 |
[Lv1] 체육복 (0) | 2019.04.10 |
[Lv1] 소수의 합, 소수 찾기 (0) | 2019.04.10 |
Comments
잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).
여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.
감사합니다. -현록