본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 2016년(C#)

by jyppro 2023. 9. 2.

2016년

오늘은 "2016년" 문제를 풀어보도록 하겠습니다. 바로 문제를 살펴보겠습니다.

 

문제 설명

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"

 

시작 코드

public class Solution {
    public string solution(int a, int b) {
        string answer = "";
        return answer;
    }
}

 

나의 풀이

using System;

public class Solution
{
        public string solution(int a, int b)
        {
            string answer = "";
            DateTime date = new DateTime(2016, a, b);
            answer = date.DayOfWeek.ToString();
            answer = answer.Substring(0, 3);

            return answer.ToUpper();
        }
}

 

코드 분석

int형 정수 a, b가 주어지며 코드가 시작됩니다. DateTime 타입으로 date를 만들어 줍니다. answer에 date.DayOfWeek를 통해 요일을 찾고 문자열로 변환합니다. 다시 answer에 기존 answer값을 Substring으로 0번째부터 3번째까지 잘라 넣어줍니다. 마지막으로 리턴할 때 ToUpper를 통해 대문자로 변환시켜줍니다.

 

풀이 설명

이번 문제는 윤년과 날짜에 대한 문제입니다. 하지만, 제가 사용한 풀이방법은 C#에 있는 DateTime 구조체를 사용하여 날짜를 구성하고, DateTime 메서드인 DayOfWeek로 날짜에 대한 요일을 쉽게 구했습니다. 그리고 문제에서 원하는 답의 형태로 변형해서 리턴해주기만 하면 끝이 납니다.

 

<NEXT>

오늘은 "2016년" 문제를 풀어보았습니다. 다음에는 "카드 뭉치" 문제를 다뤄볼 것입니다. 해당 문제는 이유는 모르겠지만 완료한 사람의 수가 1만명이 안됩니다. 감사합니다.