디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 100 추천 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/09/01 - -
AD 가전디지털, 신학기 페스타! 운영자 25/08/29 - -
2882344 태연 ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 08.18 98 0
2882343 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.18 69 0
2882341 저 졸업작픔 주제 추천좀 [7] 공기역학갤로그로 이동합니다. 08.18 136 0
2882340 자격증은 따볼까 생각중이다. 근데 3개월전 검색했던 자격증이 뭔지 몰라요 넥도리아(14.35) 08.18 74 0
2882336 c#이 c++++이었음? [2] 뉴진파갤로그로 이동합니다. 08.18 132 0
2882335 다시 맑아졌다. 넥도리아(14.35) 08.18 72 0
2882333 짱깨들 코딩 개잘하노 [2] 뉴진파갤로그로 이동합니다. 08.18 134 0
2882332 sql 파일 포맷인거 처음암 뉴진파갤로그로 이동합니다. 08.18 87 0
2882331 러스트 빠돌이들 눈돌아갈 Ada의 주요 특징 ㅋㅋ 나르시갤로그로 이동합니다. 08.18 94 0
2882330 당월 익월 이런 용어는 왜쓰는거냐? [7] 헬마스터갤로그로 이동합니다. 08.18 132 0
2882329 빌게이츠 한국오노 ㅇ.ㅇ(59.151) 08.18 83 0
2882328 전략은 분석선행 필수 ♥냥덩이♥갤로그로 이동합니다. 08.18 77 0
2882327 나의 웹앱땔깜개발자들과의 싸움 이렇게 쉽게 이기면 안되는데 [1] 네오커헠(1.237) 08.18 195 0
2882326 숨고 코딩 강사들 보면 [1] 루도그담당(118.235) 08.18 123 0
2882325 4050 썩은물로 부패하는 한국 ♥냥덩이♥갤로그로 이동합니다. 08.18 124 0
2882320 인지과학조져라 [4] 손발이시립디다갤로그로 이동합니다. 08.18 115 0
2882319 자바 문법 GR 같아서 못 해 먹겠네 증말. [4] 프갤러(59.16) 08.18 128 0
2882317 나님 왤케 특별하실깡? ♥냥덩이♥갤로그로 이동합니다. 08.18 107 0
2882316 나님 끙야즁❤+ ♥냥덩이♥갤로그로 이동합니다. 08.18 86 0
2882315 토요코키즈 ♥냥덩이♥갤로그로 이동합니다. 08.18 97 0
2882314 요새 집필 중인 1.2 Ada의 주요 특징 나르시갤로그로 이동합니다. 08.18 93 0
2882313 러스트 팬들이 놀랄 만한 Ada의 특징들 나르시갤로그로 이동합니다. 08.18 96 0
2882311 일본인을 한국의 기준으로 판단이 힘든 이유 프로외노자갤로그로 이동합니다. 08.18 132 0
2882310 동일노동 동일임금이 잘 되려면 노동강도 조사가 잘 되야 발명도둑잡기갤로그로 이동합니다. 08.18 123 0
2882309 건설업종 안전관리자가 직업에 회의감 발명도둑잡기갤로그로 이동합니다. 08.18 100 0
2882308 2030 줄고 4050 고인물천국된 판교 - 뉴스 ㅇㅇ(183.101) 08.18 125 0
2882307 이번달은 안정권이다 씨발ㅋㅋㅋ 저번달 통수만 안당했어도 ㅆㅇㅆ(124.216) 08.18 107 0
2882306 쿠팡 개발자는 노동자 죽이는 앱 개발 하다가 [6] 발명도둑잡기갤로그로 이동합니다. 08.18 155 0
2882305 오늘도 외주하나 깔쌈하게 끝냈다 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 08.18 132 0
2882304 쿠팡 노조 가입 희망자 발명도둑잡기갤로그로 이동합니다. 08.18 98 0
2882303 음기 충전 발명도둑잡기갤로그로 이동합니다. 08.18 102 0
2882302 AI 는 패턴매칭 맞지만, 알려지지않은 패턴도 거의없잖아? 피치(183.101) 08.18 104 0
2882301 ㄹㅇ 아빠회사가 최고다 [1] 프갤러(1.226) 08.18 130 0
2882299 이불 안에서 태블릿 하는 보니 발명도둑잡기갤로그로 이동합니다. 08.18 79 0
2882297 영화 <숟가락 살인자> 있대서 생각나는 것 발명도둑잡기갤로그로 이동합니다. 08.18 121 0
2882295 참 살기좋은 아름다운 나라여 ㅋㅋ 뒷통수한방(1.213) 08.18 75 0
2882294 <토이 스토리4> 예고편 보고 생각나는 것 발명도둑잡기갤로그로 이동합니다. 08.18 179 0
2882292 C로 이것저것 만들다보면 어디라도 취직은 할까? [4] 프갤러(59.24) 08.18 168 0
2882291 인공지능 시대 없어진 직업 드라마 발명도둑잡기갤로그로 이동합니다. 08.18 114 0
2882289 찬란하진 않지만 순방은 가능하자나? 프갤러(61.79) 08.18 84 0
2882287 냥덩이란 캐릭터는 참 편리하단 말이지.. 키킼 ♥냥덩이♥갤로그로 이동합니다. 08.17 103 0
2882286 오늘의 작명 실마리: 밴드명 숫가락, 멤버 금은동흙 발명도둑잡기갤로그로 이동합니다. 08.17 69 0
2882285 물리적으로 기억조작 가능 ♥냥덩이♥갤로그로 이동합니다. 08.17 119 0
2882284 오늘의.작명 실마리: 예명을 불우이웃으로 [2] 발명도둑잡기갤로그로 이동합니다. 08.17 75 0
2882281 명주실 뽑는 유상아 발명도둑잡기갤로그로 이동합니다. 08.17 69 0
2882278 음의 시간이 국부적으로 가능하면 나님만 제외시키면 ♥냥덩이♥갤로그로 이동합니다. 08.17 98 0
2882276 나님..우주의비밀을 탐구 [3] ♥냥덩이♥갤로그로 이동합니다. 08.17 128 0
2882275 '컴백 D-8' 아이브, '아이브 시크릿' 콘셉트 포토 공개 발명도둑잡기갤로그로 이동합니다. 08.17 76 0
2882274 누가 나님 냥덩이 만진거야? ♥냥덩이♥갤로그로 이동합니다. 08.17 111 0
2882273 미 인권보고서, MBC ‘파란색 1’ 날씨예보 징계 지적 발명도둑잡기갤로그로 이동합니다. 08.17 113 0
뉴스 [탐정들의 영업비밀] "반려견까지 불륜 도구?" 역대급 '문어발 외도' 남편의 충격 행각! 이유는 "아내가 잠자리 거부해서..." 디시트렌드 09.02
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2