티스토리 뷰
□문제 설명
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다.
예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
□제한사항
- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
□입출력 예
a | b | result |
5 | 24 | "TUE" |
□초기화면
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char* solution(int a, int b) {
const char* day[] = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
// 리턴할 값은 메모리를 동적 할당해주세요.
char* answer = (char*)malloc(sizeof(char)*3);
int day_num[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int count=0;
for(int i=0;i<a-1;i++){
count+=day_num[i];
}
count+=b-1;
answer = day[count%7];
return answer;
}
□코드 분석
단계 | 과정 |
변수 & 배열 | 요일에 대한 문자열 day (1월 1일이 금요일이므로 계산하기 편하게 FRI를 첫번째 값으로 지정했다.) 날짜에 대한 요일을 저장할 배열(문자) answer 각 월별 날의 수 day_num 1월 1일부터 지정한 날짜가 얼마나 떨어져있는지 계산할 변수 count |
for | 월별 날의 수 누적하기 for(int i=0;i<a-1;i++) 지정된 날짜의 월(한달이 꽉 채워지지 않은 경우)를 제외하기 위하여 a-1까지 반복하여 count에 각 월별 날의 수를 누적한다. 예를 들어, 1월 1일부터 3월 20일 사이에 있는 날의 수를 구하기 위해서는 1월의 전체 날 + 2월의 전체 날 + 3월 1일~20일 을 해야하므로 for문에서는 day_num[0] + day_num[1]만을 계산한다. |
count += b-1 | 마지막 달의 날짜 누적하기 for문을 빠져나온 후, 위의 예시에서 3월 1일~20일를 할 차례이다. 날짜는 1월 0일부터 시작하는 것이 아니라, 1일부터 시작하므로 b(지정된 날)-1만큼을 count에 더해야 한다. |
answer = day[count%7] | 해당 날짜의 요일 구하기 모든 요일은 일주일(7일)을 주기로 반복하기 때문에, day배열의 count%7방이 곧 주어진 날짜의 요일이 된다. (0번방 ~ 6번방) |
□링크
코딩테스트 연습 - 2016년
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까
programmers.co.kr
About Me
💻GitHub/KimSky904 KimSky904 - Overview Department of New Media Software. KimSky904 has 8 repositories available. Follow their code on GitHub. github.com
code-review.tistory.com
'[코테] > [Programmers Lv1]' 카테고리의 다른 글
[Programmers] Lv1_가운데 글자 가져오기 (C/C++) (0) | 2021.06.06 |
---|---|
[Programmers] Lv1_두 개 뽑아서 더하기 (C/C++) (0) | 2021.06.05 |
[Programmers] Lv1_3진법 뒤집기 (C/C++) (0) | 2021.06.03 |
[Programmers] Lv1_약수의 개수와 덧셈 (C/C++) (0) | 2021.06.03 |
[Programmers] Lv1_로또의 최고 순위와 최저 순위 (C/C++) (0) | 2021.06.02 |
댓글
공지사항
최근에 올라온 글
TAG
- 구름에듀
- Cos Pro
- c언어 기출문제
- C++
- c언어
- 구름에듀 기출문제
- C
- cospro기출
- lv1
- 배열활용문제
- programmers
- 코딩테스트
- 자바
- groom
- YBM
- cospro기출문제
- groomedu
- 배열
- YBM기출
- CosPro
- 구름 기출문제
- 1급
- Java
- 연습문제
- 알고리즘
- 코스프로
- 프로그래머스
- COSPRO 2급
- 기출문제
- lv2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함