💡 코테
프로그래머스(2016년)
MNY
2024. 4. 12. 23:41
728x90
반응형
💡 오늘의 학습 키워드
- 프로그래머스
* 2016년 : 비기너 문제
오늘의 회고
문제1 : [2016년]
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
2016년의 몇월 며칠인지 알려주었을 때, 무슨 요일인지 리턴해주는 문제였다.
내가 제일 먼저 했던 방식은 반복문을 돌면서 2월은 윤달로 29일을 나머지 홀수달은 31일 짝수달은 30일을 총 날짜 수에 더해주는 것이었다. 이렇게해서 제출했을 때 테스트 케이스 1개만 통과하지 못했다.
그래서 이게 뭐지? 했는데...
어릴 때 월별 일수 계산하는 걸 이상하게 배워놓은 게 문제였다.
손등으로 세어봤을 때 7까지 세고 하나 더 31일로 세서 8월까지 31일로 세고 와야 하는데 30일로 세고 돌아왔지..
살면서 달력 일수 세어볼 필요도 없고 세어본 적이 있었을 땐 이상하리만치 다 들어맞았기에.. 태어나서 처음 알았다.
아무튼 이걸 깨닫고는 매달의 날짜 수를 배열로 선언해줘서 구하는 방식을 택했다.
- 어떻게 해결했는지
// input : 월(int a), 일(int b)
// variable : 요일(String week), 총 날짜 수(int day)
// 월 날짜 수(int month), 리턴 요일(String answer)
/* process
월 선언 및 초기화 // 2월만 29일
요일 선언 및 초기화 // 1월 1일이 금요일부터 시작이니 목요일부터 입력
총 날짜 수(day)에 입력받은 일(b) 더하기
총 날짜 수(day) % 7 나머지 값을 인덱스로 요일 구하기
*/
// 2016. 01. 01 금요일
// 2월만 29 홀수달 31 짝수달 30
// result : 무슨 요일인지
class Solution {
public String solution(int a, int b) {
int day = 0;
int[] month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30};
String[] week = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
for (int i = 1; i < a; i++) {
day += month[i-1];
}
day += b;
String answer = week[day % 7];
return answer;
}
}
- 무엇을 새롭게 알았는지
손등으로 날짜 수 세는 걸 다시? 배웠다. 이걸 어른되서 알게 될 줄 몰랐다.
가르쳐 준 사람이 없었어서 어디서 뭘 보고 배웠는지는 모르겠다만은.. 지금이라도 제대로 알아서 참! 정말로!!! 다행이다ㅠ
오늘은 독서토론과 이력서 + 자기소개서 작성으로 학습한 내용은 그다지 없다.
요즘따라 조금 헤이해진 것 같다. 학습은 중요한 것 최대 3개까지가 내가 집중해서 완료할 수 있는 갯수인 것 같다.
내일 학습할 것은 무엇인지 (최대 3개)
- 정보처리기사 실기
- 자바 형변환 정리
- 클럽99 코딩테스트(비기너 + 미들러)
728x90
반응형