일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Robo3T 글씨체 변경
- ${변수}
- Robo3T 폰트변경
- js 문자열을 문자배열로
- 배열을 객체로
- 5.3.8 Modifying Queries
- 객체를 배열로
- 가상컴퓨터마법사
- 코딩 어?
- 우분투 시간 변경
- 프론트엔드 스쿨
- findIndex()
- @Moditying @Query
- 문자열 인터폴레이션
- Robo3T 글씨키우기
- ubuntu타임존
- search()
- 시퀄 문법
- 레디스 확인
- sql 문자열 패턴 검색
- indexOf()
- ...점점점문법
- Robo3T 폰트 키우기
- 리엑트블로거
- 스프링 데이타 JPA
- sql like연산자
- lastIndexOf()
- 객체의키값만 찾기
- 깃 토큰 만료
- 객체의 밸류값만 찾기
- Today
- Total
코딩기록
항해 8일)JS - 13프로그래머스 2016년 본문
문제 해석
2016년 한 해만 커버하면 문제를 통과할 수 있다. 따라서 day라는 배열을 만들어서 1월부터 12월까지의 총 일자를 담아놓으면 쉽게 문제를 해결할 수 있다.
var sumDay = [31,29,31,30,31,30,31,31,30,31,30,31];
이렇게 각 월의 일자를 담아둔 다음 for문을 이용해서 그 전달까지의 일자를 더한 다음 b에 주어진 일자를 더하면 1월 1일부터 현재 날짜까지의 총 일 수를 구할 수 있다. 총 일자가 구해지면 나머지 연산(X % 7)를 이용해 요일을 구하면 된다. 1월 1일이 금요일임으로 요일의 배열은
var dayOfWeek = ["THU","FRI","SAT","SUN","MON","TUE","WED"];
이러한 방식으로 목요일부터 담았다. 나머지 연산이 1이 나올 경우 ‘금요일’이 나와야 함으로 인덱스 1에 “FRI”를 담았다.
개인 블로거의 풀이를 가져옴. 아래 참고
답안
풀이
입출력 예 를 보면 a는 5 b는 24 result는 "TUE" 이다.
solution 함수에서 인자로 받는 a와 b가 5와 24일때 "TUE"라는 기댓값이 나오게하라는 뜻이다.
처음엔 함수와 인자의 의미를 몰라 입출력 예가 무슨말인지 조차 이해가 되지 않았었다.
//인덱스번호 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
var day = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //각 달의 마지막 날
// 길이 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
// 1월, 2월, 3월, 4월, 5월, 6월, 7월, 8월, 9월, 10월, 11월, 12월
day의 길이는 12이이고 인덱스 번호는 0~11
길이와 인덱스 번호의 개념을 확실히 하면 헷갈리지 않는다.
function solution(a, b) {
var answer = ''; //answer 선언,초기화
var week = ["THU","FRI","SAT","SUN","MON","TUE","WED"];
var day =[31,29,31,30,31,30,31,31,30,31,30,31]; //각 달의 마지막 일수
var sum = 0; //먼저 sum을 선언,초기화 한다
//for문의 조건을 보면 i < a-1; 까지 라고 되어있다.
for(var i = 0; i < a-1; i++){ // a는 5인데 5-1= 4 즉, 4전인 3까지 (인덱스 3) 반복해 하나씩 더해서
// sum에 넣으면
sum += day[i]; //5월 전달(4월) 까지 일수의 합이 sum에 들어간다.
}
sum += b; //sum에 b(24)를 더하면 1월 1일부터 현재 날짜까지(5월24일)의
//총 일 수를 구할 수 있다.
var ans = (sum % 7); //구한 총 일수에서 나머지 연산자를 요일을 구한다.
// 2016년 1월1일은 금요일이므로 나머지 연산이 1일때 "FRI"가
// 될수있게 week배열을 만들고 answer에 넣는다.
answer = week[ans];
return answer;
}
일자가 구해지면 나머지 연산(X % 7)를 이용해 요일을 구하면 된다. 1월 1일이 금요일임으로 요일의 배열은
인덱스 1이 "FRI"가 되도록 만든다.
※ 알아야할것 ※
for문
let num = ''; //num을 빈문자열로 선언,초기화하고
for(let i = 0; i < 5; i++) { // i는 0부터 / 4까지 / 1씩 추가 되고 (i는 아직 0이다.)
num++; // 그 값에 0+1을 해서 i=0 일때 1
i=1 일때 2
i=2 일때 3
i=3 일때 4
i=4 일때 5
console.log(num); //num값을 출력한다.
------------------------
결과
1
2
3
4
5
//주의!! i++ 와 ++i 는 큰 차이가 있다.
둘다 1씩 i값을 증가 시키는 것은 같지만 타이밍이 다르다
i++는
기존의 값을 사용하고 i를 1증가시킨다.
기존 값(0)을 들고 가서 사용하는 순간에는 기존값으로 계산되고 나중에 1이 더해진다.
++i는
사용할떄 i값을 1증가시키고 사용한다.
기존값(0)에서 1이 더해진 다음. 값(1)을 들고가 계산된다.
참고
* 개인 블로그 (for문)
*개인 블로그 (년도, 월, 일에 상관없이 날짜 구하는 공식)
https://ghost4551.tistory.com/66
*개인블로그 ( Date(), getDay() )
https://sururu.tistory.com/138
'항해99 > 챕터2 알고리즘' 카테고리의 다른 글
항해 10일)JS - 21프로그래머스 이상한 문자 만들기 (0) | 2022.01.19 |
---|---|
항해 8일)JS- 17프로그래머스- 문자열 다루기 기본 (0) | 2022.01.17 |
항해 6일)JS - 9프로그래머스 핸드폰 번호 가리기 (0) | 2022.01.15 |
항해 6일)JS - 5프로그래머스 문자열을 정수로 바꾸기 (0) | 2022.01.15 |
항해 5일)JS - 1프로그래머스 직사각형 별찍기 (0) | 2022.01.14 |