디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 110 추천 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/13 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
2876509 나님 피궁해서 애널 일찍 주무실게양⭐+ ♥불사신냥덩♥갤로그로 이동합니다. 07.30 63 0
2876503 춍춍춍! 딱춍(61.253) 07.30 72 0
2876500 웹히키씨 죽은건 아니겠지? [2] 헬마스터갤로그로 이동합니다. 07.30 132 2
2876497 이재명씨 국무회의 재밋더라 헬마스터갤로그로 이동합니다. 07.30 75 0
2876496 애널의달성 1.1/1/3 ♥불사신냥덩♥갤로그로 이동합니다. 07.30 60 0
2876494 뿡야 했는데 조금 나온거 같당.. ♥불사신냥덩♥갤로그로 이동합니다. 07.30 52 0
2876493 끼힝끼히잉 딱쟁이(61.253) 07.30 62 0
2876492 아 씨발 ㅈ됐다ㅋㅋ 프갤러(211.202) 07.30 85 0
2876491 아이스크림 먹는 미소녀- 프갤러(121.172) 07.30 80 0
2876487 대가리를 딱! 딱딱이(61.253) 07.30 70 0
2876485 [1] 프갤러(172.225) 07.30 66 0
2876484 [1] 딱코이(61.253) 07.30 71 0
2876482 멍퀴님 성희롱 그만하세요 [3] ♥불사신냥덩♥갤로그로 이동합니다. 07.30 66 0
2876480 ㅋㅅㅋ ♥불사신냥덩♥갤로그로 이동합니다. 07.30 42 0
2876479 지금 한국은 무정부상태인둣;; ♥불사신냥덩♥갤로그로 이동합니다. 07.30 83 0
2876478 한국 관세 25%+a 대한민국 제 2의 IMF 부도시작 ♥불사신냥덩♥갤로그로 이동합니다. 07.30 75 1
2876476 저는 살면서 부산 대구를 가본 적이 없어요 [3] 아스카영원히사랑해갤로그로 이동합니다. 07.30 129 0
2876474 윤수괴가 안그랬다고 버티던 부하들 하나둘 분다는구나 [1] 헬마스터갤로그로 이동합니다. 07.30 90 0
2876473 일본무슨 1.5m 파도를 쓰나미라고 호들갑떨더라 [4] 헬마스터갤로그로 이동합니다. 07.30 106 0
2876471 포괄이 사라지면 굽삐는 어떻게 되는겁니까?! [3] 개멍청한유라갤로그로 이동합니다. 07.30 91 0
2876470 건강이 먼저다 [2] 개멍청한유라갤로그로 이동합니다. 07.30 86 0
2876468 복사 의뢰하러 데이터 복구센터 간다. 넥도리아(223.38) 07.30 62 0
2876465 웹앱땔깜을 비하하고싶어서 도저히 못참겠다 [1] 네오커헠(211.235) 07.30 135 0
2876464 섹. 프갤러(121.139) 07.30 57 0
2876462 Rx Tx Engine - 작업 상황! [2] 프갤러(121.172) 07.30 97 0
2876461 Wow.. Postman mcp 라는 것도 있었네 어린이노무현갤로그로 이동합니다. 07.30 85 0
2876460 SUI 더블업 티셔츠 하나 사야겠당 어린이노무현갤로그로 이동합니다. 07.30 63 0
2876459 내년 나이 24살, 사회경험이 전혀 없습니다. 무스펙, 무경력 인생을 어 [1] ㅇㅇ(223.39) 07.30 180 0
2876458 나님 SoapUI로 json 쏘다 실패해서 [1] 아스카영원히사랑해갤로그로 이동합니다. 07.30 100 0
2876457 [메가존] 클라우드 개발자(DevOps) 대기업 채용연계형 부트캠프 메가존클라우드갤로그로 이동합니다. 07.30 154 0
2876456 나님 당 떨어진.. [1] ♥불사신냥덩♥갤로그로 이동합니다. 07.30 78 0
2876455 처음엔 내가 낙오자였는데 ㅇㅇ(220.84) 07.30 66 0
2876452 왜 국민세금으로 가짜대통령 2찢명 권력유지 해줘야 하는지? ♥불사신냥덩♥갤로그로 이동합니다. 07.30 73 0
2876449 관세협상 최악의 위험 리스크 2찢명 ♥불사신냥덩♥갤로그로 이동합니다. 07.30 80 0
2876444 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥불사신냥덩♥갤로그로 이동합니다. 07.30 72 0
2876443 무능친중극좌 가짜대통령 2찢명은 어디서 뭐하는지? 특검해야됨 ♥불사신냥덩♥갤로그로 이동합니다. 07.30 130 0
2876440 어린이노무현이 따당이임?? [1] ㅇㅇ(14.32) 07.30 65 0
2876439 중국애들 코드 킵하고 미국애들 코드 킵하고 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 07.30 109 0
2876437 진짜 세상 좋아졌다 나처럼 프로그래밍 재능없는놈도 [4] ㅆㅇㅆ찡갤로그로 이동합니다. 07.30 121 1
2876435 너네 지피티한테 코드던져서 잘 쓰인 코드면 킵해두냐 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 07.30 100 0
2876434 나죽는거냐 ㅇㅅㅇ [3] 어린이노무현갤로그로 이동합니다. 07.30 123 0
2876433 ❤+ ♥불사신냥덩♥갤로그로 이동합니다. 07.30 74 0
2876432 매트랩 AI [1] 프갤러(163.152) 07.30 82 0
2876431 ㄹㅇ 느끼는게 어지간한 구현은 거의 복붙임.. [2] ㅆㅇㅆ찡갤로그로 이동합니다. 07.30 105 0
2876430 사실 생각해보면 C# 9.0에 추가된 소스 제네레이터 쓰면 ㅆㅇㅆ(124.216) 07.30 87 0
2876429 최근에 각잡고 짠 구현 코드인데 평가 바람 [3] ㅆㅇㅆ(124.216) 07.30 119 0
2876428 아니 근데 개발을 할수록 세부구현보다는 설계만 기억남.. ㅆㅇㅆ(124.216) 07.30 77 0
2876427 gpt 매트랩 [1] 프갤러(163.152) 07.30 95 0
2876425 요즘 느끼는게 뛰어난 개발자는 주석과 문서화 잘하는 개발자임 [2] ㅆㅇㅆ(124.216) 07.30 105 0
2876423 너네 이전에 구현한거랑 읽었던 프레임워크 기억나냐? [3] ㅆㅇㅆ(124.216) 07.30 66 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2