디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 77 추천 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 - -
2877274 디코로 얼마전에 자주 가는 아키텍트 서버서 이야기하는데 [1] ㅆㅇㅆ(124.216) 08.02 69 0
2877273 인지과학조져라 [1] 손발이시립디다갤로그로 이동합니다. 08.02 72 0
2877272 마우스 패드 없이 마우스 쓰는데 프갤러(110.10) 08.02 47 0
2877271 마우스 사이드 버튼이 너무 싫다 프갤러(110.10) 08.02 42 0
2877270 근데 진짜 신기하지 않냐 원리만 놓고보면 다 간단한데 저걸 저렇게 ㅆㅇㅆ(124.216) 08.02 63 0
2877269 1차 납품 준비 끝 [2] ㅆㅇㅆ(124.216) 08.02 76 0
2877267 근데 저 기술을 해킹말고 역공학에써서 ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 70 0
2877266 해킹하는 애들 댓글단거보니까 이렇다네 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 116 0
2877265 종합적으로 봤을때 네이버쪽에서 MSA 적용과정에서 문제 생긴거라 생각중 [2] ㅆㅇㅆ(124.216) 08.02 99 1
2877264 근데 네이버도 저 수준이면 한국은 보안 의미없는거 아님? [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 101 0
2877263 해킹하는 애들 머리 존나 좋긴하네 [5] 루도그담당(58.239) 08.02 127 0
2877262 이번에 원리 찾아봤는데 네이버쪽 API 설계 결함인듯 ㅆㅇㅆ(124.216) 08.02 106 0
2877261 아스카 밤샘작업 중 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.02 77 0
2877260 아니 근데 네이버 저게 사실이면 저런 대기업도 ㅆㅇㅆ(124.216) 08.02 94 0
2877259 이번에 우왁굳인가? 걔네 이파리 ㅈㄴ 대단하네 [2] ㅆㅇㅆ(124.216) 08.02 148 0
2877258 해킹 공부 너무재밌는데? [2] 루도그담당(58.239) 08.02 88 0
2877257 Ada 프로그래밍: 5.3 goto 문 [2] 나르시갤로그로 이동합니다. 08.02 102 0
2877255 내가 아주르로 읽는 이유=원어 존중 [5] ㅆㅇㅆ(124.216) 08.02 78 0
2877253 챗 지피티 4.1 vs 지미니.. 프로 어떤게 [1] 존존갤로그로 이동합니다. 08.02 66 0
2877252 애저가 맞긴한데 아주르로 읽어도됨 ㅆㅇㅆ(124.216) 08.02 47 0
2877251 MS azure 는 아주르 아니고 "애저" 라고 읽는데 [6] 프갤러(183.101) 08.02 83 0
2877247 우리집 ㄱㄱㄱㄱ 프갤러(220.86) 08.02 134 1
2877246 멍유 2차흑화하면 닉 이걸로 바꾸냐? [1] 프갤러(119.71) 08.02 61 0
2877244 드디어 아주르 아키텍쳐 패턴 다읽었다 [11] ㅆㅇㅆ(124.216) 08.02 97 0
2877243 석열이햄 빤쓰쇼는 사실 뭐 할 수 있다고 보이긴함 [2] ㅆㅇㅆ(124.216) 08.02 82 0
2877242 멍유가 저리 망가진것도 결국 나님 때문이겠지.. [7] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.02 101 0
2877241 윤석열 빤스쇼 나도 보도싶구나 [1] 헬마스터갤로그로 이동합니다. 08.02 86 1
2877240 내일 아니 애널 뛰뛰 하려했는데 그냥 쉬어야할듯 [2] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.02 74 0
2877238 ..갔오? [1] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.02 67 0
2877237 저딴 게 일국의 머통령이었다니 ㅋㅋㅋㅋ [1] 아스카영원히사랑해갤로그로 이동합니다. 08.02 92 0
2877236 3년뒤에 SRE로 직무 변경할건데 기술 스택 평가좀요 프갤러(153.246) 08.02 46 0
2877235 당신이 먹는것들이 곧 당신이당 By 나님 [1] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.02 58 0
2877234 힘을 원하는가? [1] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.02 59 0
2877233 프로그래밍은 왜 애들이 문서를 안읽냐 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 99 0
2877232 밤샘 작업 매우 힘들구나 아스카영원히사랑해갤로그로 이동합니다. 08.02 64 0
2877230 윤석열 오늘 상황.jpg [6] 야옹아저씨갤로그로 이동합니다. 08.02 509 9
2877228 ㅅㅂ 모기 느낌 때문에 자꾸 불 껏다켯다 하니까 지치넹.. [1] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 57 0
2877227 돈벌기 어렵네 프갤러(118.235) 08.01 59 0
2877225 누가 제발 저 모기 같은 멍퀴 좀 처리 좀 해주라.. [6] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 84 0
2877224 사무직노동자가 되는길은 멀고도 험하구나 ㅇㅇ(14.52) 08.01 44 0
2877222 분명 모기 있는데.. 미치겟넹.. 모기약에도 안 죽엇낭.. [2] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 64 0
2877221 오늘부터 사이타마 운동법을 할 예정이다 [5] ㅆㅇㅆ(124.216) 08.01 74 0
2877220 컴활1급 딴사람 있음? [1] ㅇㅇ(14.52) 08.01 54 0
2877217 몸상태가 나을듯 말듯 [1] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 57 0
2877216 남자가 군대가는건 지극히 당연하고 오히려 감사해야 할일임 프갤러(115.138) 08.01 50 0
2877215 코파일럿 버그 많네 [1] 프갤러(175.213) 08.01 65 1
2877213 뉴프로에 사용자 많이 유입됐더라 헬마스터갤로그로 이동합니다. 08.01 55 0
2877212 나님 조만간 프갤러 분석 특집 칼럼 써주겠음 1편 대상자는 [4] ♥찢명아티스트냥덩♥갤로그로 이동합니다. 08.01 66 0
2877210 얘들아 나 ㄹㅇ 어떡함? 진짜 좆됐는데 씨발 [5] 프갤러(211.202) 08.01 102 0
2877207 해킹 할줄 알려면 뭐배워야됨? [1] ㅇㅇ(118.235) 08.01 69 0
뉴스 ‘옥문아’ 정일우, “달고나 커피 창시자는 나, 만두도 직접 개발해” 홍진경 긴장케 한 요리실력 디시트렌드 08.08
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2