일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 에러
- error
- 방법
- JPA
- 자바
- 코틀린
- IntelliJ
- 프로그래머스
- 생성
- Security
- 스프링
- 함수
- Vue
- Java
- aws
- 쿼리
- oracle
- JavaScript
- Git
- GitHub
- kotlin
- mybatis
- 시큐리티
- db
- jquery
- Spring
- Eclipse
- 오라클
- 넥사크로
- 알고리즘
- Today
- Total
송민준의 개발노트
프로그래머스-2016년 본문
https://programmers.co.kr/learn/courses/30/lessons/12901
내가 짠 코드
import java.util.Calendar;
import java.util.GregorianCalendar;
class Solution {
public String solution(int a, int b) {
Calendar c = new GregorianCalendar(2016, a-1, b);
String da[] = {"","SUN", "MON","TUE","WED", "THU", "FRI","SAT"};
return da[c.get(Calendar.DAY_OF_WEEK)];
}
}
참고할 코드(스터디원)
설명 : 2016년의 1월 1일은 금요일이다. String배열 day의 시작을 금요일로 설정.(~목)
배열date에는 각 월별 최대 일을 넣어준다.
그리고 구하고자 하는 달-1만큼 일수를 합치고 구하고자 하는 달의 일 수(b-1)를 마지막에 더해준다.
그리고 7로 나누면 해당 요일의 인덱스가 나온다.
ex) 나머지가 6이면 THU(목요일)
* 라이브러리를 쓰고 안쓰고에서 속도 차이가 있다.(안쓰는게 더 빠름)
참고할 코드(best)
public String solution(int a, int b) {
Calendar c = new GregorianCalendar(2016, a-1, b);
return c.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ko-KR")).toUpperCase();
}
더욱 참고할 코드
Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
.setDate(2016, month - 1, day).build();
return cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ko-KR")).toUpperCase();
사실 이 문제를 풀면서 달력 클래스의 메소드들이 기억이 잘 안났다-_- 블로그에서 주섬주섬 찾아가며 풀었다.
'달'에 -1을 해준 까닭은 캘린더에선 0이 1월달이라 그렇다.(기준이 그렇다는 뜻)
Calendar.DAY_OF_WEEK를 쓰면 숫자값이 반환이 된다. 일~토(0~7) 형식으로...
나는 String 배열을 통해 해당 값에 해당하는 문자열을 반환했지만 더욱 좋은게 있었다...
추가적으로 Locale은 한국 외 각 국가마다 표기하는 방법이 달라서 지역에 맞게 뽑아준단다... 참고하자!
+참고내용...
calendar는 추상 클래스다.
1. Calendar c - new Calendar(); 사용 불가능
2. 사용법
- Calendar c1 = calendar.getInstance(); 정적 메소드 사용
- Calendar c2 = new GregorianCalendar(); 업캐스팅 방법
관련 메소드
Calendar today = Calendar.getInstance();
System.out.println("이 해의 년도 : " + today.get(Calendar.YEAR));
System.out.println("월(0~11, 0:1월) :" + today.get(Calendar.MONTH));
System.out.println("월(0~11, 0:1월) :" + (today.get(Calendar.MONTH)+1));
System.out.println("이 해의 몇 째 주 : " + today.get(Calendar.WEEK_OF_YEAR));
System.out.println("이 달의 몇 째 주 : " + today.get(Calendar.WEEK_OF_MONTH));
System.out.println("이 달의 며칠 : " + today.get(Calendar.DATE));
System.out.println("이 달의 며칠 : " + today.get(Calendar.DAY_OF_MONTH));
System.out.println("이 해의 며칠 : " + today.get(Calendar.DAY_OF_YEAR));
System.out.println("요일(1~7, 1:일요일): " + today.get(Calendar.DAY_OF_WEEK));
System.out.println("이 달의 몇번 째 요일 : " + today.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("오전_오후(0:오전, 1:오후):" + today.get(Calendar.AM_PM));
System.out.println("시간(0~11) : " + today.get(Calendar.HOUR));
System.out.println("시간(0~11) : " + today.get(Calendar.HOUR_OF_DAY));
System.out.println("분(0~59) : " + today.get(Calendar.MINUTE));
System.out.println("초(0~59) : " + today.get(Calendar.SECOND));
'알고리즘' 카테고리의 다른 글
DFS(Depth-First Search) - 깊이 우선 탐색법 (0) | 2019.12.10 |
---|---|
프로그래머스-두 정수 사이의 합 (0) | 2019.10.29 |
프로그래머스-k번째수 (0) | 2019.10.28 |
프로그래머스-서울에서 김서방 찾기 (0) | 2019.10.28 |
프로그래머스-같은 숫자는 싫어 (0) | 2019.10.27 |