다희의 코딩 성장일기
[프로그래머스] level1. 2016년 (자바 JAVA) 본문
[ 문제 ] [프로그래머스] level1. 2016년 (자바 JAVA)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12901
# 접근 방법 및 풀이
- 먼저 2016년은 윤달이기 때문에 그에 맞는 12달 월들의 일수들을 배열로 만들었다. month[];
- 윤달은 2월이 29일인 날!
- 그다음 월~일까지 7가지 요일을 day[] 요일 배열을 만들었는데, 1일이 금요일이므로 아래와 같이 만들었다.
-
0 1 2 3 4 5 6 목 금 토 일 월 화 수 - 이렇게 만든 이유는 %연산자를 통해 %7로 하면 간단해지기 때문이다.
- 만약 7일인 경우 목요일인데, 7%7 = 0이고 목요일이 되기 때문이다. 마찬가지로 8일인 경우는 8%7 = 1이기때문에 금요일이다.
- date라는 변수를 두어 월을 일수로 바꾸고 다 더해서 나머지연산자를 사용해 계산해준다.
- 예를들어, a = 4, b = 8 즉 4월 8일인 경우, 4월 전인 1월, 2월, 3월의 일자를 다 더한 후 8을 더해주면 된다.
- 31 + 29 + 31 + 8 = 99 이라는 숫자가 나오고 99%7 = 1 이므로 금요일이다.
- 자세한건 코드참조
# 주의할 점
- 날짜 계산 헷갈리지 않게 잘 할 것!
JAVA 코드
class Solution {
public String solution(int a, int b) {
int month[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
String day[] = {"THU","FRI","SAT","SUN","MON","TUE","WED"};
int date = 0;
for(int i = 1; i < a; i++){
date+= month[i-1];
}
date += b;
return day[date%7];
}
}
REVIEW
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] level1. 두 개 뽑아서 더하기 (자바 JAVA) (0) | 2021.08.20 |
---|---|
[프로그래머스] level1. 문자열 내마음대로 정렬하기 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 시저 암호 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 가운데 글자 가져오기 (자바 JAVA) (0) | 2021.08.20 |
[프로그래머스] level1. 나누어 떨어지는 숫자 배열 (자바 JAVA) (0) | 2021.08.20 |
Comments