(코딩테스트) 2016년 (LocalDate)

2024. 4. 11. 15:35개발자 과정/Kotlin

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

 

프로그래머스

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

programmers.co.kr

풀이의 선택과정

1. 어? 윤년구하는 공식을 까먹었다.

2. 근데 코틀린은 날짜에 대한 지원이 잘 되어 있지 않을까?

3. 그럼 윤년 구하는 로직말고, 날짜 함수를 찾아보자.

 

문제고민

날짜함수 무엇을 쓸까?

 

해결방안

LocalDate의 하위기능들을 쓰자!

날짜에 대한 기능을 찾아보니, LocalDate라는 것이 있었다.

   이것을 쓰면 윤년계산도 해줘서 날짜만 넣어주면 된다고 한다. 

 

정답풀이

import java.time.LocalDate

class Solution {
    fun solution(a: Int, b: Int): String =
        LocalDate.of(2016,a,b).dayOfWeek.toString().substring(0,3)
}

 

핵심로직

LocalDate.of(2016,a,b).dayOfWeek.toString().substring(0,3)

= LocalDate에 날짜를 넣어 그 날의 요일을 찾아내고, 문자열로 변환하면서 앞의 3글자만 따온다.(기본이 풀네임)

 

새로 알게된 것

LocalDate는 최고다!

= 저 아름다운 한 줄 로직을 보라. 처음엔 함수형 언어의 넘쳐나는 부가기능에 

   함수 지옥이라고 울부짖었지만, 지금은 이 간결하고 예쁜 로직을 만들 수 있음에

   카타르시스를 느낀다.