디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 101 추천 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 - -
2881246 정희햄은 재규어햄이 있어서 아름다운 평가 받는거지 [7] ㅆㅇㅆ(124.216) 08.13 114 0
2881245 비개발 중소는 또라이 많네.. [1] 프갤러(220.92) 08.13 142 1
2881243 아스카 선정 머한민국 머통령 티어 [8] 아스카영원히사랑해갤로그로 이동합니다. 08.13 127 0
2881242 애초에 이명박 자체가 기독교 장로까지 지냈어 [2] ㅆㅇㅆ(124.216) 08.13 95 0
2881240 근데 민자당계쪽은 이명박이 망쳤음. 자기 권력기반으로 뉴라이트 [4] ㅆㅇㅆ(124.216) 08.13 94 0
2881239 울회사는 중소인데 나이먹어도 안짤리네.. [8] 프갤러(175.197) 08.13 155 0
2881238 아스카가 생각하기에 역대 조선 머통령 중 [4] 아스카영원히사랑해갤로그로 이동합니다. 08.13 105 0
2881235 내일 연차냈습니다 [6] 루도그담당(58.239) 08.13 108 0
2881234 임기말에 한국 대통령 레임덕 터지는건 뭐 당연한거라 [3] ㅆㅇㅆ(124.216) 08.13 102 0
2881233 이재명씨가 아무리 똥볼차도 내란은 이기기힘들다 [9] 헬마스터갤로그로 이동합니다. 08.13 137 0
2881232 재매이햄 보면서 느낀게 우리나라 정치권력 지형이라는게 지역유지 기반 [3] ㅆㅇㅆ(124.216) 08.13 104 0
2881231 근데 찢재명 범죄자 사면 이거 대통령 당선되면 연례행사인데 [17] ㅆㅇㅆ(124.216) 08.13 157 0
2881230 미장 <<< 씨발년 왜 오르기만 함 [5] 아스카영원히사랑해갤로그로 이동합니다. 08.13 124 0
2881228 스케일이 아닌 원칙을 운영하라는데 책 읽다보면 기술에 대한 동경이 ㅆㅇㅆ(124.216) 08.13 78 0
2881227 머리 때문에 열등감 엄청 느끼네 어디다가 풀데도 없고 [1] 프갤러(211.211) 08.13 102 0
2881226 도미노피자 3만원이 맞아? [2] 아스카영원히사랑해갤로그로 이동합니다. 08.13 84 1
2881225 나도 언젠가 쿠버네티스 쓸 정도의 서비스 운영하고 싶다 [2] ㅆㅇㅆ(124.216) 08.13 96 0
2881224 다들 좋은 사람이다 [4] 개멍청한유라갤로그로 이동합니다. 08.13 90 0
2881223 집밥 [1] 넥도리아(220.74) 08.13 95 0
2881222 sqlp 공부하면 좋은게 자료구조의 극한을 찍는거같음 [2] 밀우갤로그로 이동합니다. 08.13 111 0
2881220 반드시 걸러야할 업체 1. 넥사크로 2. 카페24 쓰는 업체 프갤러(223.54) 08.13 89 0
2881219 이재명씨 거품 슬슬 걷히는듯 하군요 [6] 헬마스터갤로그로 이동합니다. 08.13 129 0
2881218 일단 오늘 석사 논문 들어갈 그래프처리 끝내야하는데 ㅆㅇㅆ찡갤로그로 이동합니다. 08.13 83 0
2881217 하 외주 받는다고 기술 스택 술술불러서 [4] ㅆㅇㅆ찡갤로그로 이동합니다. 08.13 114 0
2881216 카페24 애미디진 좆쓰레기 새끼들 죽여버리고 싶네 [1] 프갤러(223.54) 08.13 103 0
2881214 언어는 도구일뿐 [2] 밀우갤로그로 이동합니다. 08.13 104 0
2881213 언어를 음식에 비유하면 루도그담당(58.239) 08.13 97 0
2881212 파이썬 부트캠프는 뭔 지랄이냐 [9] 밀우갤로그로 이동합니다. 08.13 208 0
2881211 K8s가 잘 이해할라면 [2] 프갤러(211.234) 08.13 122 0
2881209 자바가 GR 같은 이유. 프갤러(59.16) 08.13 84 0
2881208 사실 좆목질의 문제라는 건 그 뭐지 창조도시서 쫓겨난 애가 만든거라 [4] ㅆㅇㅆ(124.216) 08.13 97 0
2881207 좆목 문제가 친하게 지내는건 문제가 안되는데 루도그담당(118.235) 08.13 87 0
2881206 옵챗 순회했는데 [2] 루도그담당(118.235) 08.13 88 0
2881205 있다가 저녘 인증한다. 넥도리나(220.74) 08.13 85 0
2881202 개발을 개 ㅗ 으로 생각한다. [3] 프갤러(59.16) 08.13 94 0
2881198 파이썬으로 배포해본 고수님 있으신가요? [5] 프갤러(218.49) 08.13 118 0
2881196 메이플 접으니 하루가 텅텅~ 너무 공허한데 어떡함... [1] ㅇㅇ(223.39) 08.13 81 0
2881195 내가 자격증 이딴거 안믿는 이유 [2] ㅆㅇㅆ(124.216) 08.13 116 0
2881194 나도 나중에 기술사나 도전해볼까 프갤러(61.79) 08.13 67 0
2881193 폼이 오른다 점점 [1] 프갤러(61.79) 08.13 68 0
2881192 해피해피해피 ㅇㅅㅇ [3] 어린이노무현갤로그로 이동합니다. 08.13 86 0
2881190 HTML 분석 완료! 정확한 선택자로 글 작성 HTML분석마스터(211.105) 08.13 63 0
2881186 Gpt5 좀 이상해졌네 프갤러(61.79) 08.13 97 0
2881185 세상 좋다. 근무 중에 짬짬이 ai로 책쓰고 나르시갤로그로 이동합니다. 08.13 87 0
2881184 나님 최근 중국의 성장가능성에 대해 공부함 [11] 아스카영원히사랑해갤로그로 이동합니다. 08.13 123 0
2881179 아 크롤러이거 존나 귀찮아서 싱글쓰레드로 루도그담당(211.184) 08.13 88 0
2881177 쿠버네티스는 결국 TASK를 컨테이너로 치환한듯 [2] ㅆㅇㅆ(124.216) 08.13 133 0
2881176 나 쌍검류 쓰게됨 [1] 아스카영원히사랑해갤로그로 이동합니다. 08.13 117 0
2881175 쿠버네티스는 CNCF로 이관되었고 컨테이너 오케스트레이션의 표준 ㅆㅇㅆ(124.216) 08.13 76 0
2881174 마스터링 쿠버네티스 읽고 있는중 [1] ㅆㅇㅆ(124.216) 08.13 98 0
뉴스 헨리, 오늘(4일) 올해 첫 신곡 'Closer To You' 발매! 9개월 만에 컴백 디시트렌드 09.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2