디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 81 추천 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 - -
2878483 집에서 GPU를 만들었어요 발명도둑잡기갤로그로 이동합니다. 08.05 81 0
2878482 직업은 다른건데 취미로 개발하는 사람들 있냐 [1] 프갤러(222.100) 08.05 111 0
2878481 아무튼 러스트 공부 한번 해보십쇼. 지능 향상에 도움이 될겁니다. [1] 프갤러(211.234) 08.05 62 0
2878480 일베충 없애는 법 발명도둑잡기갤로그로 이동합니다. 08.05 67 0
2878479 아 자바 고액 연봉자의 진실 하나 빠진게 있군요 프갤러(211.234) 08.05 129 0
2878476 자바충 병신들이 업계 망쳐놓은거 생각하면 솔직히 비질란테 해야 프갤러(211.234) 08.05 71 0
2878475 자바 고액연봉자의 진실을 알려드릴까요? 프갤러(61.74) 08.05 141 0
2878474 근데 러스트 한국에서 어느회사가씀? [3] 밀우갤로그로 이동합니다. 08.05 90 0
2878472 물론 러스트만 잘한다고 돈 쓸어담진 못합니다. 프갤러(27.162) 08.05 68 0
2878471 러스트 빡 고수들은 돈 쓸어담고 있습니다. 자능아랑 비교 ㄴㄴ하세요. 프갤러(27.162) 08.05 60 0
2878470 애널의달성 2.2/2/ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 43 0
2878469 코틀린 서적 추천점 [1] 프갤러(223.39) 08.05 90 0
2878468 여자친구랑 캠핑 가면 재밌나요? 발명도둑잡기갤로그로 이동합니다. 08.05 68 0
2878466 러스트해봤자 자바보다 연봉 아래인데 왜함 ㅋㅋㅋㅋㅋㅋ 타이밍뒷통수한방(1.213) 08.05 89 4
2878465 뭐 괜찮습니다. 어차피 러스트를 할만한 선택받은자는 10퍼 미만 프갤러(27.170) 08.05 55 0
2878464 솔직히 러스트 뭐가 어렵다는건지 전혀 모르겠습니다. 프갤러(27.170) 08.05 52 0
2878463 러빨러 또 궤변 늘어놓기 바쁘시군요ㅎㅎ 나르시갤로그로 이동합니다. 08.05 84 6
2878462 ada는 러스트 배울 지능이 없는 저능아들의 도피처일 뿐입니다. 프갤러(27.170) 08.05 60 0
2878461 러빨러들은 왜 소스코드 안 올리는거임?? 나르시갤로그로 이동합니다. 08.05 61 4
2878458 애들이 LLM 코딩의 기본은 퍼사드 패턴인 걸 모르노 ㅆㅇㅆ(124.216) 08.05 71 0
2878456 그르게 내가 2022년에 러스트는 더 지켜봐야한다니까 나르시갤로그로 이동합니다. 08.05 71 4
2878454 좌파 우파라는게 정상적인 헌법위에서나 성립하지 ㅆㅇㅆ(124.216) 08.05 47 0
2878453 러스트 안 좋은거 인정하시는군요 ㅋㅋㅋ 나르시갤로그로 이동합니다. 08.05 87 3
2878452 tc는 원징을 말하는거아니냐? 밀우갤로그로 이동합니다. 08.05 60 0
2878451 러스트 리팩토링이 어려운건 장점입니다. [1] 프갤러(218.154) 08.05 74 0
2878450 코딩 너무 힘에 겹네 진짜 [2] ㅆㅇㅆ(124.216) 08.05 86 0
2878449 러스트는 정점이니까 언어명을 APEX라고 개명해야 합니다. 프갤러(218.154) 08.05 59 0
2878448 1년차인데 세후 연봉 500 오름 개꿀 ㅋㅋ [2] ←Backspace갤로그로 이동합니다. 08.05 113 0
2878447 러스트는 현존하는 프로그래밍 언어의 정점입니다. 프갤러(218.154) 08.05 60 0
2878446 모은 돈을 보면 행복해집니다 [1] 아스카영원히사랑해갤로그로 이동합니다. 08.05 63 0
2878445 무슨 말씀이신지? 한국을 좀먹는 일베 세력은 건재합니다. [4] 프갤러(218.154) 08.05 61 0
2878443 구글이 국내 위성사진은 왜? [2] 프갤러(49.165) 08.05 76 0
2878442 근데 좌파 우파 가릴게 있나 이제는 한국 우파라는게 궤멸했는데 [1] ㅆㅇㅆ(124.216) 08.05 68 0
2878441 문재인 이재명때 돈 안줘도된다했는데 돈뿌렸잖음 ㅋㅋ [1] 뒷통수한방(1.213) 08.05 55 0
2878439 프붕이들도 이런거 해보셈....link ㅇㅇ갤로그로 이동합니다. 08.05 62 0
2878438 정보처리 기사보다 강한 것 ㅇ ㅅㅇ 프갤러(211.36) 08.05 61 0
2878437 요기 좌파갤임? [2] ㅇㅇ갤로그로 이동합니다. 08.05 82 0
2878436 힘들다 [1] 아스카영원히사랑해갤로그로 이동합니다. 08.05 54 0
2878435 빗썸 C# Wrapper [1] OFox갤로그로 이동합니다. 08.05 59 0
2878434 오늘의 소설, 영화, 발명 실마리: 댓글 단 사람 호출하는 서비스 발명도둑잡기갤로그로 이동합니다. 08.05 55 0
2878433 허 시이바 드디어 파일 탐색 자동 감지 프로그램 짯네 프갤러(223.38) 08.05 48 0
2878432 감시 당하는 것은 전염성이 있나 발명도둑잡기갤로그로 이동합니다. 08.05 51 0
2878431 지피티 버전 뭐 써야 코드 잘 나오노? [5] 루도그담당(211.184) 08.05 68 0
2878430 아래 코인 양방매매 오픈소스 보는데 LLM이 쩔긴한거 같아 [2] ㅆㅇㅆ(124.216) 08.05 72 0
2878429 이글 보면 무슨 생각이 드나요?? 프갤러(125.134) 08.05 54 0
2878428 코인 양방매매 오픈소스를 만들었는데... [3] 프갤러(121.149) 08.05 137 1
2878426 팸코같은 커뮤니티 홈피만드려면 비용 얼마나듬? ㅇㅇ(118.235) 08.05 42 0
2878425 퇴근 언제하냐 루도그담당(211.184) 08.05 38 0
2878424 온도 낮추랬더니 ‘온도계’만 낮추는 쿠팡···폭염에 농성 시작한 노동자들 발명도둑잡기갤로그로 이동합니다. 08.05 57 0
2878423 나님 섹.스.예.감⭐+ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 61 0
뉴스 ‘이혼’ 이시영 “아이 방치+초상권 침해”…미국 식당서 ‘비매너 논란’ 디시트렌드 08.08
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2