디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 138 추천 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 - -
2877181 하루에 천억줄 감사의 코딩 공기역학갤로그로 이동합니다. 08.01 117 0
2877179 모두 냥덩이를 위해 기도 해주세양.. [3] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 133 0
2877176 주민등록 사실조사 참여 안하면 과태료 50만원 부과 될 수도 잇다네 [6] 야옹아저씨갤로그로 이동합니다. 08.01 1213 9
2877173 나님 건강 이슈로 당분간 탈갤합니당.. [1] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 138 0
2877172 구글창업자: 세르게이 - 잼민이ai 금지한사람 골때린다 프갤러(183.101) 08.01 116 0
2877169 열돔은 콘돔이당 By 나님 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 115 0
2877164 코딩 뉴비 조언좀요 ㅠㅠ 프갤러(118.235) 08.01 144 0
2877162 나님 애널두 무사히 차분하게 주무실 준비..⭐+ ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 116 0
2877161 잠 한번 잘못잤다고 멀미 비스무리하게 오는둣? ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 106 0
2877158 리버스 만유인력? ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 107 0
2877157 오호라 음의 유효질량.. ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 87 0
2877156 피궁해서 누엇당.. 졸리.. ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 92 0
2877154 뭐임 2찢명 계엄 때림? 증시 대폭망 환율 1400대 뚫었넹 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 146 0
2877153 애널의달성 3.3/1/ ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 102 0
2877151 옷을 벗기는 것보다 화장을 벗기는게 더욱 치욕적인;; ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 143 0
2877149 윤괴수 팬티쇼 보고싶지않냐? [1] 헬마스터갤로그로 이동합니다. 08.01 146 0
2877145 정신력을 직접 산출할수는 없기에 결과물로 유추하며 개인적이당 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 114 0
2877143 뀨? ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 120 0
2877142 FA 프리랜서 헝가리 가게 되면 단가가 얼마나 할까? 프갤러(58.121) 08.01 113 0
2877139 전쟁광 좌파들 때문에 3차세계전쟁 터지는구낭 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 96 0
2877137 퇴군! [4] 개멍청한유라갤로그로 이동합니다. 08.01 145 0
2877136 오랜만에 goto문 써보는구나 [5] 루도그담당(211.184) 08.01 153 0
2877135 정신병 살인귀 또 터졌구나 [7] 헬마스터갤로그로 이동합니다. 08.01 181 0
2877125 확실히 여름엔 퍼포먼스가 떨어진당 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 80 0
2877124 정치글 좀 작작쳐올려라 개씨발새끼들아 [2] 프갤러(113.59) 08.01 130 0
2877120 속보) 2찢명 번식 왕성 ! ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 117 0
2877118 가비아 대책없는 회사 보안 개ㅂㅅ사이트 ㅈㄴ 답답하네 [2] 프갤러(211.219) 08.01 364 0
2877114 ■요즘 레드오션이라는데 취업할려면 뭘 파야합니까? ㅇㅇ갤로그로 이동합니다. 08.01 167 0
2877113 혐오는 귀염을 이길수 없당⭐+ ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 115 0
2877112 보안팀 씹새끼들 아스카영원히사랑해갤로그로 이동합니다. 08.01 166 0
2877111 아스카는 힘들 때 매일 토스를 켭니다 아스카영원히사랑해갤로그로 이동합니다. 08.01 154 0
2877107 커피한잔원샷하는중 ㅇㅇ(113.59) 08.01 116 0
2877105 나님 예지력 ㄱㅆㅅㅌㅊ !! ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 106 0
2877104 날 더워서 뛰뛰를 못하니 오히려 체력지속력이 떨어지는듯 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 87 0
2877103 답이없구나 껄껄 [4] 개멍청한유라갤로그로 이동합니다. 08.01 155 0
2877102 ㄴㅇㄹ [6] 필라갤로그로 이동합니다. 08.01 110 0
2877101 충격받음 [7] ㅇㅇ(118.235) 08.01 191 0
2877099 힌트:비두해 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 73 0
2877098 오늘 해킹 공부하면서 구현한것 루도그담당(118.235) 08.01 137 0
2877097 주체를 무엇으로 설정하는지가 중요함 쉽고 간단하게 가는 방법 찾아야함 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 106 0
2877096 나님 귀납적으로 원리 유추능력 ㄱㅆㅆㅅㅌㅊ!! ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 75 0
2877095 윤수괴 감방에서 팬티쇼햇다는구나 [1] 헬마스터갤로그로 이동합니다. 08.01 116 0
2877094 역시 데이터는 거짓말 안 함 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 59 0
2877093 커피를 몇 잔씩 아이스 커피를 마시는지... 모르겠당. 넥도리아(220.74) 08.01 59 0
2877092 ts 쓸필요없네 [7] 헬마스터갤로그로 이동합니다. 08.01 149 0
2877090 잠을 이상한 자세로 자서 그런강 두통 있넹 ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 78 0
2877089 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 85 0
2877082 바이브코딩? 이거대박이라 ㅇㅇ(218.48) 08.01 1785 0
2877072 이재면씨 대통령 재밋는것같더라 [1] 헬마스터갤로그로 이동합니다. 08.01 144 0
2877065 돈이라도 많이 받으면 혼자 일 다 해도 아무말 안하지. [1] 프갤러(59.16) 08.01 99 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2