디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 78 추천 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 - -
2877590 121.139 말하는거보니 프로그래밍쪽도 아닌거 같은데 ㅆㅇㅆ(124.216) 08.03 41 0
2877588 거지세계에서 ㅆㅇㅆ가 커보이는건 당연하지 ㅋㅋ [2] 프갤러(121.139) 08.03 82 4
2877587 일단 현재 프갤에서 플밍 제일 고수는 ㅆㅇㅆ인 것 같음 [7] 아스카영원히사랑해갤로그로 이동합니다. 08.03 129 0
2877586 좀 코딩을 할 때 필요 해석문 좀 달아놔라 [6] 짇알옆차기(222.113) 08.03 97 0
2877584 인공지능에 대한 환상 프갤러(121.148) 08.03 60 0
2877580 프로그래밍 언어 만들어본 사람 있음? [6] ㅇㅇ갤로그로 이동합니다. 08.03 84 0
2877579 아이큐 같은게 사람 포텐셜을 전부 파악못하고 아이큐는 변함 [4] ㅆㅇㅆ(124.216) 08.03 87 0
2877577 난 iq검사떄 프갤러(121.139) 08.03 56 0
2877576 본인 아이큐 검사 98 나왔었음 [16] 루도그담당(58.239) 08.03 111 0
2877575 내 정리한 내용들 보는데 생각보다 열심히 공부했네 [3] ㅆㅇㅆ(124.216) 08.03 56 0
2877574 너네는 근데 공부한 내용 어떻게 정리해두냐? [4] ㅆㅇㅆ(124.216) 08.03 89 0
2877573 실베에 IQ 276 보니까 [3] 루도그담당(58.239) 08.03 99 0
2877568 내가 정리한 알고리즘 개념 그래프는 이러함 [2] ㅆㅇㅆ(124.216) 08.03 85 0
2877567 내 공부법 어떤지 소개해줌. [4] ㅆㅇㅆ(124.216) 08.03 92 0
2877566 걍 라이브러리 쓸까 [9] 루도그담당(58.239) 08.03 110 0
2877565 또 장애인 한마리 계속 시비걸면서왔군 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.03 70 0
2877564 리트코드 관련해서 어떤 데이터가 어떻게 연관있는지 정리한 [2] ㅆㅇㅆ(124.216) 08.03 71 0
2877563 하루에 한줄 감사의 코딩 [2] 공기역학갤로그로 이동합니다. 08.03 60 0
2877562 리트코드는 문제어떤 순서로 푸냐 [3] 밀우갤로그로 이동합니다. 08.03 62 0
2877559 거지말단새기가 아부리터는 나만 불편하나 프갤러(121.139) 08.03 59 4
2877558 요즘은 런타임에 동적 코드 소스 제네레이터 쓰라고 함 [3] ㅆㅇㅆ(124.216) 08.03 77 0
2877555 아 어렵다 [2] 루도그담당(58.239) 08.03 56 0
2877554 나 요즘은 지피티 코드를 내 멘토로 하기로 함 ㅆㅇㅆ(124.216) 08.03 64 0
2877553 확실히 정신병자 새끼들은 상종하면 안됨 프갤러(45.83) 08.03 76 4
2877551 코드 계속 따라치다보면 뭔가 그래 항상 [2] ㅆㅇㅆ(124.216) 08.03 73 0
2877550 진짜 파이 인스톨러 너무 좆같아 그냥 ㅆㅇㅆ(124.216) 08.03 57 0
2877549 날이 너무 무덥다 진짜 [2] ㅆㅇㅆ(124.216) 08.03 59 0
2877548 direct call 구현하는데 좆빡세네 루도그담당(58.239) 08.03 59 0
2877547 Dive into SOLANA [1] 어린이노무현갤로그로 이동합니다. 08.03 70 0
2877544 청소하기도싫고, 더워서 나가기도 싫다. 프갤러(121.139) 08.03 53 0
2877543 ㅆㅇㅆ 보면 [2] 프갤러(121.139) 08.03 94 6
2877542 gpt 수고했다 [2] 프갤러(113.59) 08.03 81 0
2877541 [대한민국] 운동권 교수한테 한 소리 했다- 프갤러(121.172) 08.03 43 0
2877536 아침에 오줌 매려운데 그 텐트가 안풀려서 오줌 못싸는게 정상임?? ㅇㅇ(223.39) 08.03 55 0
2877532 최고라는 건 결국 새로운 사고방식인데 ㅆㅇㅆ(124.216) 08.03 56 0
2877531 AI 쓰면서 느끼는데 AI는 사람 고점을 늘려주진 않음 [2] ㅆㅇㅆ(124.216) 08.03 90 0
2877529 컴공만 좃된거 아니니깐 너무 열폭하진 마 [1] 프갤러(121.148) 08.03 122 0
2877524 구름. ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.03 40 0
2877523 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.03 45 0
2877522 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.03 46 0
2877521 전자정부프레임워크랑 그누보드보면 한국이 젤 낡아빠짐 ㅇㅇ(183.101) 08.03 47 0
2877517 일본 기술 문서만 봐도 낙후화되있는거 눈에보이는데 왜 가고 싶어하지.. [1] ㅆㅇㅆ(124.216) 08.03 79 0
2877514 글쓰는거 왜오류걸리징 ㅇㅇ(39.7) 08.03 42 0
2877505 gc 쓰는거 왤케 열받지 공기역학갤로그로 이동합니다. 08.03 67 0
2877499 avif는 왜캐 지원이 느린지 [2] 밀우갤로그로 이동합니다. 08.03 152 0
2877496 미국에서 ai 천재 2400억 주고 데려오네 프갤러(221.146) 08.03 119 0
2877494 여러 생각으로 머리가 아파서 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.03 96 0
2877492 MCP 만드는법 모르는 호구 없제 프갤러(121.133) 08.03 73 0
2877489 ai 20%정도 부족한거 언제쯤 고쳐지려나 [1] 뉴진파갤로그로 이동합니다. 08.03 79 0
2877478 할까 ㅇㅅㅇ [4] 어린이노무현갤로그로 이동합니다. 08.02 101 0
뉴스 코미디언 문세윤, 방송 최초 유산 아픔 공개...“집안이 휘청일 정도로 힘들었다” 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2