디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 87 추천 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/11 - -
AD 가전디지털, 휴대폰 액세서리 SALE 운영자 25/08/08 - -
2878365 프리랜서는 커리어 무덤임? [1] 프갤러(61.79) 08.05 104 1
2878364 요즘 한국 여자들 살기좋아졌찌 프갤러(121.139) 08.05 53 1
2878363 개념글 맨위에것만 조회수 싹쓸이 하는 이유가 뭐임? ㅇㅇ(59.24) 08.05 52 0
2878362 아 씨발 스택프레임 조절하는거 루도그담당(211.184) 08.05 69 0
2878361 아니 민생쿠폰 제대로 쓰지도 못할게 만들고 왜 뿌리는거냐?? 뒷통수한방(1.213) 08.05 49 0
2878360 아니 민생쿠폰받았는데 쓸곳이 없는게 말이되냐??? 뒷통수한방(1.213) 08.05 50 0
2878357 나님 결심 ! ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 56 0
2878355 Ada의 함수형 프로그래밍 패러다임 나르시갤로그로 이동합니다. 08.05 96 0
2878354 Ada 프로그래밍 소개 나르시갤로그로 이동합니다. 08.05 52 0
2878353 러스트쓰면 함수형 이지랄 따로 안해도 숨쉬듯이 함수형 쓰는셈이네 [1] 프갤러(218.154) 08.05 144 0
2878352 요즘 애들은 학교에서 우유 안주냐?? 학교벽이 왜 깨끗하냐 ㅇㅇ(223.39) 08.05 52 0
2878348 자프링 -> MSA -> AI기반 서비스 개발 요흐름이네 [1] 위키세카이(211.234) 08.05 107 0
2878346 역시 경제는 대.재.명 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 62 0
2878343 흠.. ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 56 0
2878342 중소사내erp정도면 구글앱시트로 떡침 [1] 위키세카이(211.234) 08.05 128 0
2878341 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 48 0
2878337 백엔드 신입으로 갈 수 있을까 [1] ㅇㅇ(118.235) 08.05 301 0
2878336 섹스☘+ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 56 0
2878333 발음 새는 새끼들은 왜 그런거임?? 구조적으로 정말 어쩔 수 없음?? [6] ㅇㅇ(223.39) 08.05 87 0
2878331 확실히 잠 충분히 잤을때랑 아닐때랑 퍼포먼스 차이 엄청남 [2] ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 71 0
2878330 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 48 0
2878329 The One ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 54 0
2878328 Run for the future! [1] 어린이노무현갤로그로 이동합니다. 08.05 66 0
2878327 이재명씨 생각보다 철학이 좋구나 헬마스터갤로그로 이동합니다. 08.05 90 0
2878326 회사 데이터베이스 만들고 싶은데 조언 부탁해요 [2] 5018(211.235) 08.05 84 0
2878324 알고리즘 공부같은거 하고싶음 [6] 밀우갤로그로 이동합니다. 08.05 94 0
2878322 흠.. 이게 m이고 이게 s인강? ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 67 0
2878321 광고 정신나갔네 [1] 루도그담당(58.239) 08.05 71 0
2878319 회사에 가면 보통 일을 못하는 사람은 배구공(119.202) 08.05 72 1
2878317 주식걍 시드 미장에 억대로 박으면 걍 천단위로 버는데 [2] 위키세카이(211.234) 08.05 132 0
2878315 광고누르니까 이런거 나와요. 배구공(119.202) 08.05 69 0
2878313 역시 경제는 대.재.명 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 57 0
2878311 수영장 가본지 엄청 오래됐네 [1] 배구공(119.202) 08.05 59 0
2878310 웹하면 아랫글 처럼 다 알아야 되나요 [1] 배구공(119.202) 08.05 77 0
2878307 우리회사 3-5년차 개발자들 진짜 개발존나못한다 [7] 프갤러(121.169) 08.05 323 0
2878300 역시 7,8월엔 장거리 뛰뛰하면 안됨 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 69 0
2878299 나는 한남이야ㅇㅅㅇ [3] 프갤로갤로그로 이동합니다. 08.05 83 0
2878289 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.05 62 0
2878286 인공 호수 바닥을 일케 얕게 만들면..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.05 59 0
2878284 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.05 54 0
2878283 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.05 75 0
2878275 꼬추랑 물 컵에다가 섞어서 맹물에 마시면 정력증진되고, 소주보다 좋음 넥도리아(220.74) 08.05 75 0
2878224 친구는 인공지능 친구가 있어요 발명도둑잡기갤로그로 이동합니다. 08.05 72 0
2878203 미제의 살인기업 쿠팡 소식 발명도둑잡기갤로그로 이동합니다. 08.05 98 0
2878181 음기 충전 발명도둑잡기갤로그로 이동합니다. 08.05 61 0
2878178 내 코드 라이브러리 만든거 봐줄 사람이 없노 [2] ㅆㅇㅆ(124.216) 08.05 128 0
2878165 민주당이 진실 규명 촉구한 '내란 10대 의혹', 무엇무엇 있나 보니 발명도둑잡기갤로그로 이동합니다. 08.05 83 0
2878152 조유리 '이제 안녕! (Farewell for now!)' 발명도둑잡기갤로그로 이동합니다. 08.05 70 0
2878150 삶이 너무 많은 후회와 미련으로 점철되어 앞으로 나아갈 힘이 없구나... [1] ㅇㅇ(223.39) 08.05 88 0
2878144 멜론의 몰락은 지역 독과점 회사가 글로벌 독과점 회사에게 먹힌 것이다 발명도둑잡기갤로그로 이동합니다. 08.05 57 0
뉴스 19세 수리 ‘크루즈’ 성 버렸지만 아빠 붕어빵 DNA는 여전 디시트렌드 08.11
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2