디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 82 추천 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/04 - -
AD 가전디지털, 휴대폰 액세서리 SALE 운영자 25/08/08 - -
2879278 지피티는 코드성능 별론거같은데 [4] ㅆㅇㅆ(124.216) 08.08 71 0
2879277 '러스트 담론을 해체하다'는 책은 개선할 필요가 있습니다. 나르시갤로그로 이동합니다. 08.08 42 0
2879276 뭐냐 5 나왔네 루도그담당(211.184) 08.08 34 0
2879275 러스트 담론을 해체하다'는 책의 내용을 활용하여 해당 주장을 ... 나르시갤로그로 이동합니다. 08.08 37 0
2879274 러스트(Rust)와 확증 편향: PYPL 순위를 맹신하는 사람들 나르시갤로그로 이동합니다. 08.08 38 1
2879273 즐거운 목요일 아침입니다~ [5] 가연아갤로그로 이동합니다. 08.08 41 0
2879272 정신력 전성기를 맞이하고있는거같음 [4] 공기역학갤로그로 이동합니다. 08.08 58 0
2879271 옹해내로 외계인공식화 될수도? ♥냥덩이♥갤로그로 이동합니다. 08.08 25 0
2879270 tiobe 인덱스는 병신 지표이며 pypl이 더 정확합니다. 프갤러(218.154) 08.08 48 0
2879268 GPT5 성능 진짜 좆된다 [3] 에이도비갤로그로 이동합니다. 08.08 105 0
2879267 나 이기적인 사람이야. 이웃 생각하면서 타인생각하면서도 가족한테는 넥도리아(220.74) 08.08 22 0
2879266 샌도니거 인도인들은 다 쫓아내야한다 ♥냥덩이♥갤로그로 이동합니다. 08.08 22 0
2879265 한녀는 악성재고다 [4] ♥냥덩이♥갤로그로 이동합니다. 08.08 52 0
2879264 Ada 프로그래밍: 1.2 핵심 설계 철학 나르시갤로그로 이동합니다. 08.08 43 0
2879262 Ada 프로그래밍: 1.1 Ada의 역사 나르시갤로그로 이동합니다. 08.08 40 0
2879261 오늘나온 뉴스인데 엄청 공감가네 [2] 에이도비갤로그로 이동합니다. 08.08 186 1
2879260 이 한남새끼들아 이 내가 힘들다고 하잖아! ㅇㅇ(211.246) 08.08 42 0
2879259 개발자는 가망없고 보안은 가망있는듯 [1] 프갤러(175.208) 08.08 64 0
2879258 나님 통찰력 왤케 ㅆㅅㅌㅊ일깡? ♥냥덩이♥갤로그로 이동합니다. 08.08 33 0
2879257 상대방의 외모가 자신이 생각한 자기의 외모에 가까울수록 [1] ♥냥덩이♥갤로그로 이동합니다. 08.08 47 0
2879256 치욕스러워서, 굴욕적이어서 살지 못하겠습니다. [1] 프갤러(220.84) 08.08 56 1
2879255 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.08 28 0
2879254 발언권, 결정권, 영향력 박탈하니까 뒤집어지죠. 프갤러(220.84) 08.08 39 0
2879253 빈부격차 심한 사회에서 적은 사회보다 인기 많은 노래 특징 발명도둑잡기갤로그로 이동합니다. 08.08 33 0
2879251 귀신, 신, 유령이 하나도 안 무서워지게 되는 방법 발명도둑잡기갤로그로 이동합니다. 08.08 33 0
2879250 힙합-合(합할 합, 홉 갑, 홉 홉)-SEX-X-처형-십자가-십-씹 발명도둑잡기갤로그로 이동합니다. 08.08 32 0
2879249 생물학 대인 무기 약물: 정상인에게 조현병 걸리게 하는 약 성분 [1] 발명도둑잡기갤로그로 이동합니다. 08.08 55 0
2879248 Ada 프로그래밍: 1. Ada 패러다임 나르시갤로그로 이동합니다. 08.08 30 0
2879247 Ada 프로그래밍: 1부: Ada의 기초 나르시갤로그로 이동합니다. 08.08 37 0
2879246 Ada 프로그래밍: 머리말 나르시갤로그로 이동합니다. 08.08 56 0
2879244 권위주의와 종교와 성적 억압 발명도둑잡기갤로그로 이동합니다. 08.08 74 0
2879242 쉿! ♥냥덩이♥갤로그로 이동합니다. 08.08 33 0
2879232 어케 act에서 떨어지지 ㅅㅂ 프갤러(175.112) 08.08 55 0
2879222 자바가 개병신인 이유 [1] ㅇㅇ갤로그로 이동합니다. 08.08 79 0
2879220 근데 왜 아직도 국비지원 << 왤케 해주는거임? [3] 프갤러(222.107) 08.08 162 0
2879217 부서에 트롤있으면 코드 개 ㅈ되냐? 프갤러(118.223) 08.08 53 0
2879216 자야겠어 루도그담당(58.239) 08.08 35 0
2879215 오늘의 소설, 영화 실마리: 밤에는 고양이 낮에는 개로 변하는 사람 발명도둑잡기갤로그로 이동합니다. 08.08 38 0
2879212 형들 재택근무가 많은 개발직종은 어디야? [1] 프갤러(175.204) 08.07 95 0
2879210 헬조센에선 정신과 약 먹으며 버티는게 답이다 프갤러(61.79) 08.07 47 0
2879208 마음을 비우면 행복해져요~ [3] 개멍청한유라갤로그로 이동합니다. 08.07 70 0
2879205 아스카는 내일 휴가다 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.07 74 0
2879204 진동스피커가 책상에 납땜 되었습니다. 순간접착제 들어가서, ㅠㅠㅠ 넥도리아(220.74) 08.07 33 0
2879203 정액으로 우라늄이랑 순갑접착제 접착된거 땔 수 있습니까? [1] 넥도리아(220.74) 08.07 57 0
2879201 잘자요 [7] 개멍청한유라갤로그로 이동합니다. 08.07 71 0
2879200 익명 싫어하는놈 없냐 프갤러(211.234) 08.07 55 0
2879198 단독 보도) 구글 제미니로 책 쓰는 방법 나르시갤로그로 이동합니다. 08.07 68 2
2879192 마귀소굴의 음기에 찌그러질것 같아요. 프갤러(220.84) 08.07 41 0
2879191 3d max할줄 아시는분 있나요 [2] ㅇㅇ(14.52) 08.07 65 0
2879190 ai 만드는게 목표인사람 있음? 일단 나 [13] 프갤러(175.197) 08.07 99 0
뉴스 [뚜벅이 맛총사] '예능 초보' 연우진, '2살 형' 권율과 같은 세대라서 불만? 불쑥 튀어나온 속내에 현장 초토화! 디시트렌드 08.09
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2