디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 137 추천 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/11/17 - -
AD 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
2879971 극한 상황에서 체력, 여성이 남성보다 우수 [달콤한 사이언스] 발명도둑잡기갤로그로 이동합니다. 08.10 90 0
2879969 안녕히계세요 여러분-! 분해 [1] 넥도리아(220.74) 08.10 165 0
2879957 Call ♥냥덩이♥갤로그로 이동합니다. 08.10 136 0
2879954 ㅆㅇㅆ야 뭐보고 공부했냐 [1] ㅇㅇ(118.235) 08.10 124 0
2879953 신이 있다면 제발 대답해줘어엇!!!!!!!!!!! ♥냥덩이♥갤로그로 이동합니다. 08.10 95 0
2879952 영화 슈퍼맨, ‘가자 전쟁’ 얘기?…“현실은 더 참혹” 발명도둑잡기갤로그로 이동합니다. 08.10 64 0
2879951 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.10 105 0
2879949 오늘의 소설, 영화 실마리: 인공지능 무인 암살 로보트 자판기 발명도둑잡기갤로그로 이동합니다. 08.10 110 0
2879948 밴드가 솔로보다 인기 끌 확률 더 큰가 연구 발명도둑잡기갤로그로 이동합니다. 08.10 120 0
2879945 음악치료 유명한 성공사례 발명도둑잡기갤로그로 이동합니다. 08.10 122 0
2879942 국가대표 AI 개발 경쟁, KT·카카오는 왜 탈락했을까 발명도둑잡기갤로그로 이동합니다. 08.10 133 0
2879937 몇명 이상 모여야 뇌가 그 집단을 사람이 아닌 사물로 인지 발명도둑잡기갤로그로 이동합니다. 08.10 121 0
2879934 매체의 변화와 대중문화의 형성 발명도둑잡기갤로그로 이동합니다. 08.10 122 0
2879928 조선 금속활자 책종 구텐베르크 이후 60년간 유럽 각국보다 6배 [1] 발명도둑잡기갤로그로 이동합니다. 08.10 116 0
2879927 1377년 금속활자로 인쇄한 『직지』가 현대 우리에게 전하는 것은 [1] 발명도둑잡기갤로그로 이동합니다. 08.10 122 0
2879926 오늘의 발명 실마리: 비밀 [1] 발명도둑잡기갤로그로 이동합니다. 08.10 80 0
2879921 섹스가 시작되자 죽음이 탄생했다? l 이정모 발명도둑잡기갤로그로 이동합니다. 08.10 60 0
2879920 반복돼 온 대멸종 법칙! "인류는 반드시 멸종" l 이정모 발명도둑잡기갤로그로 이동합니다. 08.10 108 0
2879919 ‘인공지능이 인류를 말살한다?’ 큰 파장을 낳은 AI2027 보고서 발명도둑잡기갤로그로 이동합니다. 08.10 210 0
2879913 기억 속 한 장의 필름④ — 0.75평, 양심을 가둔 방 발명도둑잡기갤로그로 이동합니다. 08.10 80 0
2879912 중국 오케스트라와 유럽 가는 거장 "나의 유일한 바람은…" 발명도둑잡기갤로그로 이동합니다. 08.10 108 0
2879909 스텔라장-워크맨 발명도둑잡기갤로그로 이동합니다. 08.10 90 0
2879902 노조 이야기 한 래퍼 발명도둑잡기갤로그로 이동합니다. 08.10 158 0
2879893 한국 힙합이 가사로 이야기하는 범위와 이야기 하지 못하고 침묵하는 범위 발명도둑잡기갤로그로 이동합니다. 08.10 288 0
2879892 유럽 일깨운 조선활자술의 '금속길' 상상기행 발명도둑잡기갤로그로 이동합니다. 08.10 156 0
2879891 역사적으로 노래가 상품이 된 시점 이전과 이후 [1] 발명도둑잡기갤로그로 이동합니다. 08.10 243 0
2879883 한국에서 20년 동안 우분투 커뮤니티를 지키는 사람들 발명도둑잡기갤로그로 이동합니다. 08.10 126 0
2879882 Gpt 세계 최고 AI 기업인데 [1] 프갤러(61.79) 08.10 137 0
2879876 전범선과 양반들 - 아래로부터의 혁명 발명도둑잡기갤로그로 이동합니다. 08.10 146 0
2879872 이 기회에 도커 삭제하고 Rancher로 갈아타야겠다 ㅆㅇㅆ(124.216) 08.10 133 0
2879867 ㅆㅇㅆ 이병신은 제너럴 리스트도아님 ㅋㅋ 프갤러(121.139) 08.10 173 4
2879864 Rancher데스크탑으로 바꾸는 중인데 자꾸 도커랑 충돌하네 ㅆㅇㅆ(124.216) 08.10 77 0
2879860 살인의 추억 배우들 최근 모습 발명도둑잡기갤로그로 이동합니다. 08.10 104 0
2879856 영카트 코드 보고가라 - ㅋㅋ ㅇㅇ(183.101) 08.10 94 0
2879855 C++ 인생 40 년 갈아 넣었습니다. [1] 프갤러(59.16) 08.10 160 0
2879854 저수준도 생각보다 자주바뀜 메모리캐싱도 그렇고 [2] ㅆㅇㅆ(124.216) 08.10 145 0
2879853 근데 솔직히 저수준 공부가 더 재밌음 [1] 밀우갤로그로 이동합니다. 08.10 161 0
2879852 영카트가 재밌을거 같다고..? ㅇㅇ(183.101) 08.10 107 0
2879851 저수준은 셰프고 고수준 언어는 동네 식당 주방ㅇㅇ ㅇㅇ(183.101) 08.10 126 0
2879850 미국의 양당정치 스펙트럼 발명도둑잡기갤로그로 이동합니다. 08.10 87 0
2879849 이 씨발 씨플플이 쉽다는 개새끼들 진짜 이해가안가네 [5] 프갤러(210.99) 08.09 167 0
2879839 멍퀴를 본 슬기 표정.. [4] ♥냥덩이♥갤로그로 이동합니다. 08.09 205 0
2879837 에구구.. [2] ♥냥덩이♥갤로그로 이동합니다. 08.09 156 0
2879834 1 시갼 남ㅇ음~!!!!!!! ㅇㅇ(106.101) 08.09 125 0
2879833 애들한테 저수준 강요하는 강사들보면 혐오감 들수밖에 없는게 뭐냐면 [3] ㅆㅇㅆ(124.216) 08.09 266 0
2879832 저수준은 잘하면 좋은데 먹고 사는길이 너무 좁음 ㅆㅇㅆ(124.216) 08.09 209 0
2879831 ‘쎈캐’ 홍기준 맞아? 세상 물정 모르는 ‘어수룩’ 완벽 변신 발명도둑잡기갤로그로 이동합니다. 08.09 159 0
2879830 근래 저수준 해보면서 느끼는건데 [2] 루도그담당(58.239) 08.09 167 0
2879829 <파인> 홍기 발명도둑잡기갤로그로 이동합니다. 08.09 160 0
2879828 이상한 회사 존나많네.. [4] 프갤러(222.96) 08.09 172 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2