디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 142 추천 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 - -
2879071 개인 사이트 다듬는중 [4] 어린이노무현갤로그로 이동합니다. 08.07 220 3
2879070 210000글/30000댓글 최종글댓비 7:1 마감 [2] ♥냥덩이♥갤로그로 이동합니다. 08.07 119 0
2879069 프갤사기꾼명단 프갤러(211.169) 08.07 157 0
2879068 이제 미국커뮤에서만 놀아야징 ♥냥덩이♥갤로그로 이동합니다. 08.07 98 0
2879067 나님도 이제 슬슬 디시 그만 올때가 된거 같군 ♥냥덩이♥갤로그로 이동합니다. 08.07 133 0
2879066 머리가 나쁘면 게임 만드는데 컴파일러 배워야한다는데 속아넘어감 [9] ㅆㅇㅆ(124.216) 08.07 220 0
2879065 디시인사이드 2천원에 팔린댄다 [4] 헬마스터갤로그로 이동합니다. 08.07 169 0
2879064 항상 느끼지만 겉멋코딩하는 새끼들이 문제야 [1] ㅆㅇㅆ(124.216) 08.07 140 0
2879062 정적언어 사고방식이랑 동적언어 사고방식이 다른데 [2] ㅆㅇㅆ(124.216) 08.07 150 0
2879061 파이썬 만든거랑 운영되는게 무슨 상관이여 ㅆㅇㅆ(124.216) 08.07 127 0
2879060 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.07 85 0
2879059 좇센징 기술력 = 붉은별 국산리눅스 뒷통수한방(1.213) 08.07 129 0
2879058 파이썬 만든사람 ms에서 일해서 ms가 문재인이후 발전이 없구나 ㅋㅋㅋ 뒷통수한방(1.213) 08.07 150 0
2879057 파이썬 좋음?? ㅎㅎ 뒷통수한방(1.213) 08.07 95 0
2879056 누가 파이썬이 쉽다고 했냐? [2] 프갤러(59.16) 08.07 221 0
2879055 정치거리는데 대기업일수록 더 정치이야기 많이하더라 ㅋㅋ 뒷통수한방(1.213) 08.07 84 0
2879054 공부하기 싫은데 어떡함 ㄹㅇ 프갤러(211.202) 08.07 133 0
2879052 정치병이라는게 무섭지 ㅇㅇ갤로그로 이동합니다. 08.07 112 0
2879051 공수처 검찰청 경찰청 국제수사 과학수사 포랜식수사 기무사 국정원 존재이유 뒷통수한방(1.213) 08.07 112 0
2879050 뭐지.. 클로드 데스크탑 신버전 엄청 개선됐ㅁ [1] 어린이노무현갤로그로 이동합니다. 08.07 166 0
2879047 아 개졸리당 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.07 72 0
2879045 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.07 95 0
2879043 개발자 5년내로 없어지는거 아니었노? [4] 프갤러(121.137) 08.07 233 0
2879040 내 프로그래밍 지식 볼트가 드디어 패턴 20개 드디어 넘김 [2] ㅆㅇㅆ(124.216) 08.07 202 0
2879039 근데 열심히 공부할수록 벽 느껴짐 [1] 루도그담당(211.184) 08.07 168 0
2879038 뉴프로에 분기별 랭킹 도입햇더라 [7] 헬마스터갤로그로 이동합니다. 08.07 141 0
2879037 열정을 굳이 과시까지 할 필요 있나? [5] 어린이노무현갤로그로 이동합니다. 08.07 166 0
2879036 우웅.. [2] ♥꽃보다냥덩♥갤로그로 이동합니다. 08.07 125 0
2879035 졸업작품으로 앱개발하려는데 어떤 앱을 만들면좋을까? [1] ㅇㅇ(118.235) 08.07 144 0
2879033 그냥 쓰던 파이4 미니만 써야겠다 [2] ㅆㅇㅆ(124.216) 08.07 153 0
2879032 리눅스도 다뤄야 하는구만 루도그담당(118.235) 08.07 128 0
2879031 해보니 그냥 클라우드 올려서하는게 답이네 ㅆㅇㅆ(124.216) 08.07 114 0
2879030 책 삿다 루도그담당(211.184) 08.07 109 0
2879028 해보니 로컬 모델 이거 죽어버려서 CPU로 하는데 느리네 [2] ㅆㅇㅆ(124.216) 08.07 126 0
2879027 인생이 요즘 노잼이네 [2] ㅇㅇ(61.79) 08.07 142 0
2879026 고통스럽게 다이어트해서 뭐하냐 프갤러(61.79) 08.07 106 0
2879024 비로소 여름이었당☘+ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.07 91 0
2879022 야 이번 OSS 로컬 모델 이거 괜찮네 MCP 붙일 수 있어서 [2] ㅆㅇㅆ(124.216) 08.07 132 0
2879021 리눅스갤에서 팩트말했다고 차단먹음 ㅋㅋㅋ [2] 뒷통수한방(1.213) 08.07 129 0
2879019 정치충들만 사라져도 갤 클린해질듯 [3] 박민준갤로그로 이동합니다. 08.07 176 1
2879017 시각장애인들은 프로그램들에서 충분히 접근성을 갖고있음? [1] 여자아이파티갤로그로 이동합니다. 08.07 139 0
2879016 랭체인,랭그래프만 쓸 줄 알았는데 오히려 Ollma가 상품 개발 안하면 ㅆㅇㅆ(124.216) 08.07 144 0
2879015 Ollma 써보고 있는데 이거 개사기네 내가 LLM 만들어도 Ollma로 ㅆㅇㅆ(124.216) 08.07 125 0
2879014 마약전과 40대 미국입국불허 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.07 126 0
2879013 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.07 102 0
2879012 이따위로 만든 솔루션도 2000받고 파는구나 [1] 아스카영원히사랑해갤로그로 이동합니다. 08.07 154 0
2879010 gpt oss가 머냐 자체실행모델이라고? [2] 밀우갤로그로 이동합니다. 08.07 175 0
2879009 OSS 이거 MCP 프로토콜 실행하는 방법 찾아봐야긋노 ㅆㅇㅆ(124.216) 08.07 121 0
2879006 Ollma 써서 OSS 해보려는 세팅 중 [3] ㅆㅇㅆ(124.216) 08.07 143 0
2879004 It 서적 읽을만한거 뭐 있을까 [4] 루도그담당(211.184) 08.07 114 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2