🍀 문제
두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.
요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT입니다.
제한 조건
- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
입출력 예
5 | 24 | TUE |
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
나의 코드 😊
class Solution {
public String solution(int a, int b) {
int sum = 0;
switch (a) {//1월1일부터 a월 b일까지의 총 날짜
case 12:
sum += 30;
case 11:
sum += 31;
case 10:
sum += 30;
case 9:
sum += 31;
case 8:
sum += 31;
case 7:
sum += 30;
case 6:
sum += 31;
case 5:
sum += 30;
case 4:
sum += 31;
case 3:
sum += 29;
case 2:
sum += 31;
case 1:
sum += b;
}
String[] days = { "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED" };
return days[sum % 7]; // 7로 나눈 나머지로 요일 정하기
}
}
switch 문을 사용하여 a월 b일 까지의 날짜를 다 더했다.
총 날짜에 7를 나눈 나머지로 요일을 정해주었다.
멋진 다른 사람의 코드 😎
class Solution {
public String solution(int a, int b) {
String answer = "";
int[] c = {31,29,31,30,31,30,31,31,30,31,30,31};
String[] MM ={"FRI","SAT","SUN","MON","TUE","WED","THU"};
int Adate = 0;
for(int i = 0 ; i< a-1; i++){
Adate += c[i];
}
Adate += b-1;
answer = MM[Adate %7];
return answer;
}
}
⭐ switch 없이 간결하게 풀 수 있었다!!
각 달에 며칠 씩 있는지 배열에 넣어
for문으로 더해 총 날짜수를 구할 수 있었다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 LV1. 문자열 내 마음대로 정렬하기 자바 (0) | 2020.08.14 |
---|---|
프로그래머스 LV1. 같은 숫자는 싫어 (0) | 2020.08.14 |
프로그래머스 LV1. 크레인 인형뽑기 게임 (0) | 2020.08.12 |
프로그래머스 LV1. 키패드 누르기 (0) | 2020.08.12 |
프로그래머스 LV1. K번째 수 (0) | 2020.08.11 |
댓글