본문 바로가기
프로그래머스 Algorithm

[프로그래머스] 2016년 Kotlin

by Echung 2024. 1. 14.

thumbnail

안녕하세요. 이번에는 프로그래머스 2016년 문제를 풀어보려고 합니다. 

Problem


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

 

프로그래머스

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

programmers.co.kr

Solution


class Solution {
    fun solution(a: Int, b: Int): String {
        var answer = ""
        var arr = arrayOf("THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED")
        var manthToDay = arrayOf(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
        var days = 0

        for(i in 0 until a) {
            days += manthToDay[i]    
        }

        days += b

        return arr[days % 7]
    }
}

이번 문제는 1일부터 금요일이기 때문에 1번째 인덱스에 FRI를 기준으로 주를 넣은 배열을 만들어줬습니다.

그리고 달마다 주어지는 일수를 manthToDay 배열을 만들었습니다.

이렇게 주어진 결과를 for문을 사용해서 a달까지 day를 더해주고 마지막으로 b의 일수를 더해주는 방법으로 문제를 풀어보았습니다.

1. 다른 사람 코드

class Solution {
    fun solution(a: Int, b: Int): String {
        val week = listOf("THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED")

        var answer = ""
        var days = b

        for (i in 1 until a) {
            days += when (i) {
                1, 3, 5, 7, 8, 10, 12 -> 31
                2 -> 29
                else -> 30
            }
        }

        answer = week[days % 7]
        return answer
    }
}

저와 다르게 when을 활용해서 좀 더 가독성이 좋은 코드를 가져와보았습니다. 아직까지 Java를 하다가 Kotlin을 사용해서 when을 잘 활용하지 못하는 것 같습니다. 코드를 작성할 때 when을 생각하면서 작성하도록 노력해 봐야겠습니다. 


Performance

1. 내가 작성한 코드 2. 다른 사람 코드
반응형