디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 116 추천 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/10/20 - -
AD 할로윈 슈퍼위크~!! 운영자 25/10/23 - -
2877429 오늘 해킹 공부하면서 배운 것 [2] 루도그담당(58.239) 08.02 135 0
2877425 겜만들어서 세금 3300낸다는대 [2] 프갤러(211.235) 08.02 117 0
2877421 넥도리아 안철수 댓글에 달았습니다. 뒷골목 간담회 넥도리아(220.74) 08.02 89 0
2877419 개발자도 이제는 인싸 직업임 [2] 어린이노무현갤로그로 이동합니다. 08.02 162 0
2877418 aa 프갤러(113.59) 08.02 91 0
2877417 ㅇㅇ 프갤러(113.59) 08.02 96 0
2877414 내가 느끼는게 일단 지금 잘 돌아가는거 사실 구조 바꾸고 리팩토링해야하데 ㅆㅇㅆ(124.216) 08.02 106 0
2877413 가끔 보면 나는 프로그래밍에 재능이 없는거 같아 [4] ㅆㅇㅆ(124.216) 08.02 152 0
2877412 사담콘 다녀와씀 [6] 어린이노무현갤로그로 이동합니다. 08.02 139 0
2877411 내가 만든 mcp 나름 성능좋은거같은데 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 110 0
2877408 월급이 3번 나오는 삶… [3] 어린이노무현갤로그로 이동합니다. 08.02 123 0
2877407 제품번호를 277 이 아닌 원래 227이여야 하는데, [1] 넥도리아(220.74) 08.02 98 0
2877405 한컴 회장님 저 이 옵션에 접근했어요... 넥도리아(220.74) 08.02 96 0
2877403 나는 스스로 쓰레기인거 인증하고 남한테 말할 자신있음 [1] 뒷통수한방(1.213) 08.02 116 0
2877394 cmd에서 빌드실행 하는데 왜 이러나요? [3] 프갤러(218.149) 08.02 110 0
2877382 지금 토스나 뱅크샐러드 들어가보면 [3] 아스카영원히사랑해갤로그로 이동합니다. 08.02 253 0
2877381 취업하려면 토익,컴활1급 도움되나요?? ㅇㅇ(14.52) 08.02 109 0
2877380 마인드 컨트롤.. 프갤러(222.234) 08.02 86 0
2877378 클라이언트 절대다수는 코드 수준을 평가할 수 없다 [3] ㅆㅇㅆ(124.216) 08.02 146 0
2877377 포인터 = 사실 정수형 담는 변수임 [5] 루도그담당(58.239) 08.02 157 0
2877376 근데 포인터 너무 어려워서 겁쟁이 런한 나같은 개발자 없냐? [2] ㅆㅇㅆ(124.216) 08.02 126 0
2877375 포인터 씨발년아 [3] 프갤러(222.234) 08.02 152 0
2877374 코딩 처음시작 조언좀 [2] 프갤러(114.199) 08.02 149 0
2877373 프리도 실력천차만별임. 프리코드 받아보면 [8] ㅆㅇㅆ(124.216) 08.02 187 0
2877370 프리 할 정도면 존나 잘해야 되지 않냐 [2] ㅇㅇ갤로그로 이동합니다. 08.02 146 0
2877369 굉장히 접고 습합니다 [1] 개멍청한유라갤로그로 이동합니다. 08.02 111 0
2877365 프리랜서 이력서 가짜로 쓰는 애들은 뭐냐 [3] ㅇㅇ갤로그로 이동합니다. 08.02 166 0
2877363 레드팀 문서 같은거 보면서 느낀건데 [2] 루도그담당(58.239) 08.02 104 0
2877362 나 약쟁이가 되어버렸음 [4] 공기역학갤로그로 이동합니다. 08.02 140 0
2877361 나 안쫒겨났다. 무지성 도배하기 싫어서 떡밥을 기다리는 중이지 프갤러(14.58) 08.02 86 0
2877358 김건희씨에 대한 빤스맨 윤수괴의 집착이 대단하지않냐? [3] 헬마스터갤로그로 이동합니다. 08.02 122 0
2877357 개인적으로 강의는 프로그램 만드는 강의 아니면 굳이 싶다. ㅆㅇㅆ(124.216) 08.02 107 0
2877356 회사에서 llm 지원해주냐..? [3] 프갤러(58.122) 08.02 123 1
2877354 근데 어차피 지피티 쓰면서 예제 짜달라고하면서 문서 읽는게 [2] ㅆㅇㅆ(124.216) 08.02 140 0
2877351 솔직히 문서 좋은데 루도그담당(58.239) 08.02 106 0
2877350 리액트 문서 추천하자면 ㅆㅇㅆ(124.216) 08.02 121 0
2877349 C/C++ C# Java 이건 기본으로 공부해 놔라. [1] 프갤러(59.16) 08.02 180 0
2877348 갠적으로 내 생각엔 강의 듣는것보다 문서 따라가는게 더 나은거같은데 [2] ㅆㅇㅆ(124.216) 08.02 135 0
2877346 해킹 공부 시작할게요 [2] 루도그담당(58.239) 08.02 112 0
2877345 리액트(코알누, 인프런) [2] 프갤러(222.101) 08.02 1742 0
2877343 멋사 백엔드 부트캠프 ㄱㅊ? 프갤러(218.149) 08.02 216 0
2877341 이런 날씨는 밤낮을 바꿔야하는것 아닙니까? [3] 헬마스터갤로그로 이동합니다. 08.02 114 0
2877339 애초에 루비야 넌 그냥 피해망상 정병이잖냐 ㅆㅇㅆ(124.216) 08.02 105 0
2877338 매미 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 08.02 99 0
2877336 재활용했다 탄소중립포인트 없어진데 당분간 넥도리아(223.38) 08.02 74 0
2877335 이정부랑 전정부사람들의 공통점 이탓 넥도리아(223.38) 08.02 99 0
2877332 근데 루비야 니가 그 커뮤니티를 황폐하게 만드는 놈인데 누굴 탓해 ㅆㅇㅆ(124.216) 08.02 112 2
2877326 사마천은 궁형을당해 고자가 되고. 사기를 집필함 프갤러(183.101) 08.02 102 0
2877317 스승님은 항상 주 언어 con을 무조건 보면서 감각을 익히라고하는데 [3] ㅆㅇㅆ(124.216) 08.02 112 0
2877313 태연 ㅇㅅㅇ [7] 헤르 미온느갤로그로 이동합니다. 08.02 122 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2