안녕 세상아,

[프로그래머스/c++] Lv1 2016년 본문

프로그래머스

[프로그래머스/c++] Lv1 2016년

돈 많은 백수가 되고싶다 2024. 10. 7. 13:16

https://school.programmers.co.kr/learn/courses/30/lessons/12901

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답률 높은 순서로 풀고 있는데 레벨1 나오면 이렇게 반가울 수가 없다...마음의 안정...^^

 

문제에서 윤년이라고 주어졌고, 윤년이라면 2월이 29일까지 있는 것이다. 

 

1. 달 별 일수(month)와 요일(day)을 각각 배열로 나타낸다. 

2. for문을 돌리면서 주어진 a달 전까지는 배열의 값으로 계속 더해주고 주어진 a달을 만나면 b를 더해준다. 

3. 일수를 다 더해주면 -1 해준 후 7로 나눈 나머지를 day 배열에 넣어주면 된다. 

#include <string>
#include <vector>

using namespace std;

string solution(int a, int b) {
    string answer = "";
    //윤년이면 2월 29일까지 있음
    int month[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
    string day[7] = { "FRI","SAT","SUN","MON","TUE","WED","THU" };
    int sum = 0;

    for (int i = 1; i <= a; i++) {
        if (i == a) {
            sum += b;
            break;
        }
        sum += month[i - 1];
    }
    sum = (sum - 1) % 7;
    answer = day[sum];

    return answer;
}