728x90
나의코드)
// function solution(month,day){
// let answer=[];//빈 배열 설정
// let daysOfMonth=[0,31,28,31,30,31,30,31,31,30,31,30,31]//각 달마다 날의 개수
// let upTodays=0;//이번달 전까지의 달의 날짜 모두 더해주는 변수
// let sumToday=0//이번 달까지의 날을 모두 더해주는 변수
// let totalDays=0;//98일을 더한 총 일수
// let count=0//달이 들어갈 부분
// for(i=0;i<month;i++){
// upTodays=daysOfMonth[i]+upTodays
// } //이번달 전까지의 일수를 모두 더함
// sumToday=upTodays+day//거기에 이번달의 day를 더함
// totalDays=sumToday+98//거기에 앞으로의 98일을 더함
// if(totalDays>365)//365보다 더 큰 경우에는
// totalDays=totalDays-365//365를 빼줌(순환됨)
// else{
// totalDays=totalDays//아니면 그대로임
// }
// for(i=0;i<daysOfMonth.length;i++){
// if(totalDays>daysOfMonth[i]){//만약 전체날짜가 > daysOfMonth[i]이면
// totalDays=totalDays-daysOfMonth[i]//전체 날짜에서 달 수를 순차적으로 빼줌
// count=count+1} //해주는만큼 count를 올림
// }answer.push(count)//최종 카운트 = 달을 의미
// answer.push(totalDays)//남은 totaldays는 날을 의미
// return answer//answer에 넣어서 반환
// }console.log(solution(6,22))//최종 출력[9,28]
나의풀이)
1월 1일부터 항해를 시작하는 현재날짜까지를 sumToday라는 변수에 담아 저장한 뒤 거기에 98일을 더한 값을 totalDays에 최종적으로 저장한다. 이 때 98일이라는 숫자로 인해 항해를 시작하는 달이 10월 ~ 12월인경우에는 내년으로 넘어갈 수 있기 때문에 totalDays가 365일 이상인 경우에는 365를 빼주어야 한다. (문제에서 윤년에 대한 계산없이 2월은 모두 28일로 고정되어있다) 이 단계를 거친 후의 totalDays가 > daysOfMonth[i]라면 totalDays<daysOfMonth[i]가 될 때까지 for문을 이용해서 계속해서 빼준다. 최종적으로 남은 totalDays는 날짜의 값이 된다. i가 돌아갈 때마다 위에서 설정해둔 count라는 값을 하나씩 더해가는데, for문이 종료 될 때의 count의 값은 달의 값이 된다. 빈 배열인 answer에 count와 totalDays의 값을 각각 달과 날짜의 값으로 받아 넣어주면 완료
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스 알고리즘 스터디 [문37-40] (0) | 2022.03.24 |
---|---|
프로그래머스 자바스크립트 알고리즘 스터디[문33~문36] (0) | 2022.03.16 |
프로그래머스 자바스크립트 알고리즘 스터디[문29~문32] (0) | 2022.03.14 |
프로그래머스 자바스크립트 알고리즘 스터디[문25~문28] (0) | 2022.03.14 |
프로그래머스 자바스크립트 알고리즘 스터디 [문21~문24] (0) | 2022.03.14 |