ABOUT ME

Konkuk.Univ 학교공부,대외활동,생활코딩,유튜브 등을 정리하는 블로그

Today
Yesterday
Total
  • 2007년
    백준 2023. 7. 31. 12:01
    728x90

    좀 어이없게 풀었는데 풀려서 더 어이 없었던 문제이다.

    문제

    오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

    입력

    첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

    출력

    첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

    예제 입력 1

    1 1
    
    

    예제 출력 1

    MON
    
    

    예제 입력 2

    3 14
    
    

    예제 출력 2

    WED
    
    

    예제 입력 3

    9 2
    
    

    예제 출력 3

    SUN
    

    년도를 2007년으로 제한 시켜둔 문제라 윤년등을 고려하지 않아도 되어좀 쉽게 풀릴 수 있던것 같다.

     

    정답코드

    fun main() {
        val input= readLine()
        val (month,day)=input?.split(" ")?.map { it.toInt() }?: listOf(0,0)
        val week=arrayOf("SUN","MON","TUE","WED","THU","FRI","SAT")
        val monthDays= arrayOf(0,31,59,90,120,151,181,212,243,273,304,334)
        val totalDays:Int=monthDays[month-1]+day
        println(week[totalDays%7])
    }
    

    머리쓰기가 싫어서 조금은 거친 방식으로 짜본 코드이다. 달의 날짜를 직접 누적시켜 배열에 저장했는데 사실 조금 체계적으로 짠다면 월별 일수를 따로 저장해 코드를 진행하는 것이 적절한 방법이라고 생각한다.

     

    개선코드

    fun main() {
        val input= readLine()
        val (month,day)=input?.split(" ")?.map { it.toInt() }?: listOf(0,0)
        val week=arrayOf("SUN","MON","TUE","WED","THU","FRI","SAT")
        val daysInMonth = arrayOf(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
        val totalDays = (1 until month).sumBy { daysInMonth[it - 1] } + day
        println(week[totalDays%7])
    }
    

    월별로 각 월이 갖고있는 날짜를 배열에 저장한 뒤 val totalDays = (1 *until* month).*sumBy* **{** daysInMonth[**it** - 1] **}** + day이 부분을 통해 월을 입력받고 그 월 전까지의 날짜수를 누적해서 더하는 방식으로 누적된 일 수를 구하였다..

    이러면 좀 더 코드의 활용도가 높아진다…

    해당 문제해선 1월의 날짜수를 갖고있는 것이 무의미한 것 같기도..

    '백준' 카테고리의 다른 글

    단어 정렬  (0) 2023.07.31
    영화감독 숌  (0) 2023.07.31
    수 정렬하기3  (0) 2023.07.31
    이상한 곱셈(공부필요)  (0) 2023.07.31
    최대공약수와 최소공배수<유클리드 호제법>  (0) 2023.07.31
Designed by Tistory.