디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

토스 코틀린 코드가 뭔가 해서 보는데 이것도 걍 C스타일이든데

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 83 추천 1 댓글 0

class Solution {


    fun solution(assets: Array<String>): Array<String> =

        assets.mapNotNull { asset -> runCatching { asset.toAssetResult() }.getOrNull() }

            .sorted()

            .filter(Asset::isValid)

            .map(Asset::text)

            .distinct()

            .toTypedArray()


}


object ValidationError : Throwable()



fun String.toAssetResult(): Asset =

    when {

        length != 9 -> throw ValidationError

        slice(0..1).toIntOrNull() == null -> throw ValidationError

        get(2) != '-' -> throw ValidationError

        runCatching { Asset.Type.valueOf(slice(3..4)) }.isFailure -> throw ValidationError

        slice(5..6).toIntOrNull() == null -> throw ValidationError

        slice(7..8).toIntOrNull() == null -> throw ValidationError

        else -> Asset(

            text = this,

            yy = slice(0..1).toInt(),

            type = Asset.Type.valueOf(slice(3..4)),

            mm = slice(5..6).toInt(),

            no = slice(7..8).toInt()

        )

    }


data class Asset(

    val text: String,

    val yy: Int,

    val type: Type,

    val mm: Int,

    val no: Int

) : Comparable<Asset> {


    enum class Type {

        SP, KE, MO, CO, DE

    }


    val isValid: Boolean

        get() {

            return (yy in 13..22) && (mm in 1..12) && when {

                yy == 13 && mm < 4 -> false

                yy == 22 && mm > 8 -> false

                else -> true

            } && (no in 1..99)

        }


    override fun compareTo(other: Asset): Int {

        return when {

            yy > other.yy -> 1

            yy < other.yy -> -1

            type.ordinal > other.type.ordinal -> 1

            type.ordinal < other.type.ordinal -> -1

            mm > other.mm -> 1

            mm < other.mm -> -1

            no > other.no -> 1

            no < other.no -> -1

            else -> 0

        }

    }


}


이 문제 말인가?


이것도


까놓고 말해서 코틀린 스타일이 아니잖아


코틀린 쓸거면


CompareTo(other:Asset) 이런식으로 쓰지



fun solution(assets: Array<String>): Array<String> =

    assets.mapNotNull { it.toAssetOrNull() }

        .filter { it.isValid() }

        .distinctBy { it.toString() }

        .sorted()

        .map { it.toString() }

        .toTypedArray()


data class Asset(val yy: Int, val type: Type, val mm: Int, val no: Int) : Comparable<Asset> {


    enum class Type {

        SP, KE, MO, CO, DE

    }


    override fun compareTo(other: Asset): Int =

        compareValuesBy(this, other, Asset::yy, Asset::type, Asset::mm, Asset::no)


    override fun toString(): String =

        "%02d-%s%02d%02d".format(yy, type.name, mm, no)


    fun isValid(): Boolean =

        yy in 13..22 &&

        mm in 1..12 &&

        no in 1..99 &&

        !(yy == 13 && mm < 4) &&

        !(yy == 22 && mm > 8)

}


fun String.toAssetOrNull(): Asset? {

    if (length != 9 || this[2] != '-') return null

    val yy = substring(0, 2).toIntOrNull() ?: return null

    val type = runCatching { Asset.Type.valueOf(substring(3, 5)) }.getOrNull() ?: return null

    val mm = substring(5, 7).toIntOrNull() ?: return null

    val no = substring(7, 9).toIntOrNull() ?: return null

    return Asset(yy, type, mm, no)

}


책임도 하나에 매몰되있고 걍 순전히 기능 구현만 넣은거던데

아래처럼 살짝만 품들이면 더 깔끔하게 만드는데 글쎄다 싶다

애초에 순서도 이상해

선 필터링-> 후 정렬이 되야하는데

왜 더 비용이 많이 드는 작업을 하고 있는거야

이게 모범 답안이라고 적어둔거보고 흠ㅋㅋ 싶던데

추천 비추천

1

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 시구, 시축 했다가 이미지가 더 나빠진 스타는? 운영자 25/08/11 - -
AD 가전디지털, 휴대폰 액세서리 SALE 운영자 25/08/08 - -
2877805 내가 생각할때 웹앱개발자들은 걍 자동으로 다해주는거임 [1] 네오커헠(1.237) 08.04 137 0
2877804 강물 ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 08.04 65 0
2877803 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.04 51 0
2877802 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.04 57 0
2877801 ETW 패치함 루도그담당(211.184) 08.04 42 0
2877798 ... 배구공(119.202) 08.04 55 0
2877796 흠, 웹쪽은 async에 통신을 일임해도 안뻗나보네 [1] 네오커헠(211.234) 08.04 135 0
2877794 히히히 [1] 어린이노무현갤로그로 이동합니다. 08.04 83 0
2877791 아침부터 서비스 장애로 7시 출근함 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.04 78 0
2877790 gradle은 진짜 가젤펀치 마렵네 [2] 헬마스터갤로그로 이동합니다. 08.04 70 0
2877789 동양인 70억 민족성 ㄹㅇ 대단하지않냐?? [1] 뒷통수한방(1.213) 08.04 61 0
2877788 내가 8년전부터 지금까지 계속 하던말들이 무시당하는이유 타이밍뒷통수한방(1.213) 08.04 48 0
2877786 빨리 이 칼날 위를 걷는 삶이 아닌 [4] ㅆㅇㅆ찡갤로그로 이동합니다. 08.04 70 0
2877785 C++ 쓰는데 [7] 루도그담당(118.235) 08.04 101 0
2877784 오늘도 피곤하구나 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.04 68 0
2877783 민생쿠폰때문에 콜센터 전화했는데 뭔 통화료를 부과하냐??? 뒷통수한방(1.213) 08.04 49 0
2877780 씨발 히키새끼야 너 믿고 프로그래밍 공부했다가 시간 날렸다 [9] 프갤러(222.108) 08.04 118 1
2877775 유니티 인디게임 대부분 유저 데이터 암호화해놓냐 [11] 프갤러(118.223) 08.04 123 0
2877774 딱신(211.234) 08.04 52 0
2877773 오늘을 살자 내일도 살리자 넥도리나(220.74) 08.04 63 0
2877769 개좆되는 게임성만 있으면 [1] 뉴진파갤로그로 이동합니다. 08.04 88 0
2877767 씨발 다시는 히키같은 새끼가 나오면 안 됨 프갤러(222.108) 08.04 85 0
2877763 히키 씨발년 진짜 증오스럽다 개새 [3] 프갤러(222.108) 08.04 109 1
2877760 이거 갖고싶움 ㅇㅅㅇ [3] 어린이노무현갤로그로 이동합니다. 08.04 105 0
2877759 진짜 프로그래머들 이래요? [1] ㅇㅇ갤로그로 이동합니다. 08.04 144 1
2877754 머학에서 수업 30시간 이상 못듣는거 충격적이지않음? [1] 공기역학갤로그로 이동합니다. 08.04 94 0
2877753 메모리랑 io를 원하는 타이밍에 통제못하는게 화남 [1] 공기역학갤로그로 이동합니다. 08.04 93 0
2877750 이렇게 까지 해서 벌어야 하나? ㅇㅇ(175.223) 08.04 67 0
2877749 Rust 특 [2] 프갤러(121.150) 08.04 100 0
2877747 슬슬 오늘도 한권의 책을 다 읽었으니 자야긋다 [2] ㅆㅇㅆ(124.216) 08.04 86 0
2877745 async에 대해서 조금 쉽게 설명을 해주자면 대강 이럼. [1] ㅆㅇㅆ(124.216) 08.04 120 0
2877743 근데 C# 개발자가 async를 안 쓸수가 있나? ㅆㅇㅆ(124.216) 08.04 95 0
2877742 나는 인생에 지향하는 바가 명확하다면 좀 넉넉치않아도 행복하다 생각함 ㅆㅇㅆ(124.216) 08.04 89 0
2877741 가끔은 유학을 사람들이 아예 안 읽어서 참 아쉽단 생각을 해. ㅆㅇㅆ(124.216) 08.04 85 0
2877740 개발자 된지 2년 넘었는데 async가 뭔지 모름 [12] 프갤러(1.245) 08.04 171 0
2877739 안철수씨 말 덜 더듬더라 [2] 헬마스터갤로그로 이동합니다. 08.04 106 0
2877738 중요한건 인생의 경험을 어떻게 자산화 하느냐가 낭비냐 아니냐가 되는거지. [1] ㅆㅇㅆ(124.216) 08.04 94 0
2877737 인생은 남이 보면 지옥이더라도 자기가 만족하면됨. [6] ㅆㅇㅆ(124.216) 08.04 103 0
2877736 인생이 지옥으로 떨어지는 건 한순간이다 [8] 아스카영원히사랑해갤로그로 이동합니다. 08.04 221 1
2877733 하노이의탑 재귀호출 문제 풀다가 자살하고싶어짐 [1] ㅇㅇ(223.39) 08.03 114 0
2877728 113.오구차단 넥도리아(220.74) 08.03 57 0
2877726 넥도리아 쟤도 차단해야겠네 프갤러(113.59) 08.03 97 0
2877725 내일 아침 국장 볼만하겠노 [1] 아스카영원히사랑해갤로그로 이동합니다. 08.03 153 1
2877723 지피티5나오면 국비는 ㅈ댐? [1] ㅇㅇ(211.235) 08.03 174 0
2877721 챗지피티랑 제미나이랑 성능차이 존나 심한듯 [2] 프갤러(220.70) 08.03 117 0
2877720 사람들 생성형 ai 잘다루는 백엔드 개발자 존나 좋아하는 듯 프갤러(118.36) 08.03 111 0
2877719 오늘 해킹 공부한 것 루도그담당(58.239) 08.03 82 0
2877716 성격 급한 애들이 문제얌. [3] 넥도리아(220.74) 08.03 88 0
2877715 오토바이가 조금 빨리 가겠다고해서, 피해주다가 앞 못봐서 펜스기둥에 넥도리아(220.74) 08.03 60 0
2877714 백제 황산벌 전투 계백의 이름이 미스터리 책사풍후갤로그로 이동합니다. 08.03 57 0
뉴스 블핑 제니, 메이크업 싹 지우고 파리에서 전한 소탈한 매력...“제니의 파리 여행기” 디시트렌드 08.10
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2