프로그래머스
프로그래머스 #2016년
링규
2022. 5. 6. 21:28
https://programmers.co.kr/learn/courses/30/lessons/12901
코딩테스트 연습 - 2016년
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까
programmers.co.kr
해결 방안
- 1월 1일이 금요일이므로 n월 m일이 1월 일로 부터 몇 일 뒤인지 계산하여 7로 나누어 요일을 구한다
필요한 변수
count : 일수를 계산할 int 변수
int[] month : 각 월의 일수를 저장할 int 배열
String[] days : 요일을 저장할 String 배열
class Solution {
public String solution(int a, int b) {
String answer = "";
//count 변수 = 1월 1일로 부터 몇 일이 지났는지
//[] = 1~12월까지 일 수를 배열로 만든것
//[] = 요일을 배열로 만든 것
int count = 0;
int[] month = new int[] {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30};
String[] days = new String[] {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
for(int i=0; i<a; i++){
count += month[i];
} //앞 달의 일수를 모두 더하기
count += b-1;
//1월 2일이 주어졌다고 가정했을 때 for문에서 count는 그대로 0,
//b는 2이므로 -1 을 해야 맞는 계산이 나온다
//(1월 2일은 1월 1일의 1일 후)
answer = days[count%7];
return answer;
}
}
이 문제는 다른 사람의 풀이 보는 재미가 있었다 ㅎㅎ
캘린더 함수로 푸신 분도 계시고 와 이럴수가 할 정도로 수작업 하신분도 계시고 ...
나랑 같은 알고리즘으로 푸셨는데 사소한 부분들은 또 다른 게 재밌었다