디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 127 추천 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/03 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48469 65
2900728 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥KiTTY냥덩♥갤로그로 이동합니다. 07:09 11 0
2900727 구현하다가 자려고 느낀건데 난 행복한 놈이다 ㅆㅇㅆ(124.216) 04:31 30 0
2900726 와 주간운세 버그 터졌던거 모르고 냅뒀더니 이틀사이에 사용자가 ㅆㅇㅆ(124.216) 03:27 38 0
2900725 2. Rust 2D 라이브러리 (가장 유력한 '안전한' 대안) 나르시갤로그로 이동합니다. 03:03 20 0
2900717 Wpf 의뢰 40만짜리들어옴 ㅆㅇㅆ찡갤로그로 이동합니다. 00:32 33 0
2900716 코드가지고 고민하는게 개발자다 [1] 박민준갤로그로 이동합니다. 00:25 51 0
2900713 세계 최고 반공국가 천조국의 식사 배급 근황 [1] 발명도둑잡기(39.7) 00:00 34 0
2900711 시스템을 이해해 전제부터 틀렸어 [1] ㅇㅇ(211.234) 11.04 60 0
2900708 대량 자본 투자가 예술을 망치는 원리 발명도둑잡기(39.7) 11.04 29 0
2900706 나 여전히 프갤에 있는데 뭐꼬 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 11.04 47 0
2900705 ㅆㅇㅆ 프갤에서 사라져서 뭐하나 했더니 ㅇㅇ(211.234) 11.04 67 4
2900703 조갑제 “한국 극우는 역사의 바퀴벌레…경주 아펙이 매장시켰다” 발명도둑잡기(39.7) 11.04 20 0
2900697 내가 죽어도 프로젝트 지속 가능한 오픈소스 시스템은 어떠할까? 나르시갤로그로 이동합니다. 11.04 18 0
2900696 노동에 즐거움이 없다면 chironpractor갤로그로 이동합니다. 11.04 19 0
2900695 guiyom 도메인 먼저 선점해놓을까? 아니면 나르시갤로그로 이동합니다. 11.04 17 0
2900694 금요일에 갈까 토요일에 갈까? 치과 [1] 나르시갤로그로 이동합니다. 11.04 21 1
2900693 변리사 없이도 척척 해내는 나는 천재가 맞지? ㅎㅎ [2] 나르시갤로그로 이동합니다. 11.04 35 0
2900692 배움이란 무엇일까 나는 뭘하는걸까 ㅆㅇㅆ(124.216) 11.04 24 0
2900691 잡긴 잡았는데 한 마리 아닐경우가 걱정.. [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 63 0
2900690 누워서 자려는데 갑자기 뭔가 눈에 걸리적 거리다 설마.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 23 0
2900689 와 개 ㅅㅂ.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 28 0
2900688 아이고 갤이 또 씹창이 났구만 ㅇㅇ(122.199) 11.04 30 0
2900687 [애니뉴스] 선행컷! 이 멋진 세계에 축복을! 프갤러(121.172) 11.04 12 0
2900686 나님 주무시기전 소통⭐+ 질문 받음 [5] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 41 0
2900684 오늘부러 역사적 유산이 될 Guiyom 툴킷 개발에 돌입한다. [5] 나르시갤로그로 이동합니다. 11.04 44 0
2900677 뀨? ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 43 0
2900670 오늘 칫과에서 앞니 하나 수선함 나르시갤로그로 이동합니다. 11.04 21 0
2900669 러스트 Iced 툴킷 설계 결함. [4] 나르시갤로그로 이동합니다. 11.04 40 0
2900668 나님 애널 일찍 졸린듯? 영차끙차 나씻주준? ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 46 0
2900666 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 41 0
2900665 안전 분야 및 임베디드 분야에서 필수 GUI 툴킷이 되겠군 ㅎㅎ [27] 나르시갤로그로 이동합니다. 11.04 90 0
2900664 자기객관화 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 25 0
2900663 오픈소스 프로젝트를 기반으로 지속 가능한 상업적 성공 [2] 나르시갤로그로 이동합니다. 11.04 40 0
2900658 알고보니 어렸을 때 치파오 입고 있었고 프갤러(211.210) 11.04 25 0
2900657 기안84 수상한 건 프갤러(211.210) 11.04 34 0
2900656 요즘 좌파 화교 특 프갤러(211.210) 11.04 22 0
2900652 가장 안전하고 전략적인 "하이브리드" 방식 나르시갤로그로 이동합니다. 11.04 25 0
2900650 부천역 bj들 내쫒는 분위기네 프갤러(211.210) 11.04 25 0
2900648 "천재"의 아이디어를 빼앗기지 않고 오픈소스로 안전하게 협업 나르시갤로그로 이동합니다. 11.04 24 0
2900647 학생들 꽤나 스택이랑 힙 어려워하네 [3] ㅆㅇㅆ(104.28) 11.04 58 0
2900646 나는조현병이야 나는내향적이야 손발이시립디다갤로그로 이동합니다. 11.04 41 0
2900645 점심에 먹었던 짜장면이 생각나 [6] 루도그담당(58.239) 11.04 41 0
2900643 화짱조들은 본인들이 화짱조가 차별 받는거 알아서 ㅇㅅㅇ [1] 류류(118.235) 11.04 30 0
2900641 누가 자꾸 냥덩이글에 댓글유령짓 하는거야..? [1] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 34 0
2900640 냥덩이 화짱조였구나 류류(118.235) 11.04 21 0
2900639 냥덩이 고양이 고기 먹었다고 인증 [1] 발명도둑잡기(118.235) 11.04 44 0
2900638 러스트나 배우고 기뻐해라 프갤러(211.234) 11.04 23 0
2900637 ‘배우고 그것을 때때로 익히니 기쁘지 않겠는가’ 발명도둑잡기(118.235) 11.04 12 0
2900636 나님 저녁맘마 인증❤+ [1] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.04 38 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2