디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 92 추천 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/18 - -
AD 전자제품 세일쇼! 운영자 25/08/19 - -
2879700 피아노도 취미로 괜찮은거같군요 현무E공인(58.225) 08.09 70 0
2879699 토스 next 시험봤는데 [4] 프갤러(110.13) 08.09 248 0
2879698 와..시간.. 프갤러(106.102) 08.09 112 0
2879696 나님 힐링즁⭐+ ♥냥덩이♥갤로그로 이동합니다. 08.09 56 0
2879690 <여행을 대신 해드립니다> 한대서 생각나는 예전 글 발명도둑잡기갤로그로 이동합니다. 08.09 61 0
2879688 속보지는 겉보지는 ♥냥덩이♥갤로그로 이동합니다. 08.09 71 0
2879685 <파인: 촌뜨기들> 예고편 발명도둑잡기갤로그로 이동합니다. 08.09 103 0
2879681 아버지 밑에서 일, 일주일 프갤러(121.172) 08.09 69 0
2879678 파인 임수점 발명도둑잡기갤로그로 이동합니다. 08.09 55 0
2879674 7 0 0 0 0원 받'으'세'요~~~ ㅇㅇ(106.101) 08.09 44 0
2879673 철이와 미애-너는 왜 발명도둑잡기갤로그로 이동합니다. 08.09 44 0
2879670 냥덩이 연예인 포르노 매매 이제는 안하지? 발명도둑잡기갤로그로 이동합니다. 08.09 52 0
2879669 내일배움카드가 발명도둑잡기갤로그로 이동합니다. 08.09 50 0
2879668 토스 코테 뭐냐 ㅇㅇ(218.155) 08.09 229 2
2879667 컨디션 조절이 가장 어려움 ♥냥덩이♥갤로그로 이동합니다. 08.09 49 0
2879665 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.09 54 0
2879642 박원-All of my life 발명도둑잡기갤로그로 이동합니다. 08.09 38 0
2879637 노션 띄어쓰기 어케함 [1] 프갤러(112.146) 08.09 67 0
2879628 내일배움카드로 개발자 부트캠에서 배우고싶은데 추천부탁드립니다 프갤러(61.254) 08.09 76 0
2879624 나님께 나쁜말 악플 ㄴㄴ ♥냥덩이♥갤로그로 이동합니다. 08.09 55 0
2879616 최.초.공.개 ♥냥덩이♥갤로그로 이동합니다. 08.09 66 0
2879615 함부로 다른 ip에 핑보내면 처벌받냐? [2] 프갤러(118.223) 08.09 94 0
2879612 토스 공채 이번에 역대급이긴 함 3만명 지원했음 [2] 프갤러(121.167) 08.09 229 0
2879611 ‘착한 사나이’ 문태유, 짧지만 강한 존재감! ‘신스틸러’ 활약 기대 발명도둑잡기갤로그로 이동합니다. 08.09 59 0
2879610 디씨 매물로 나왔데 프갤러(110.47) 08.09 61 0
2879609 나 중요부위 제모중인데 아이스팩으로 열식히면서 피부 염증 넥도리아(220.74) 08.09 60 0
2879608 해외주식이랑 선물, 옵션에 API가 유료라 ㅆㅇㅆ(124.216) 08.09 69 0
2879607 흠.. ♥냥덩이♥갤로그로 이동합니다. 08.09 45 0
2879606 해외주식, 해외선물 등등 이게 분야가 왜 세부적으로 다르지 ㅆㅇㅆ(124.216) 08.09 55 0
2879600 잼땅 ♥냥덩이♥갤로그로 이동합니다. 08.09 41 0
2879596 에구구.. ♥냥덩이♥갤로그로 이동합니다. 08.09 71 0
2879590 좆소ㄹㅈㄷ네 [4] 프갤러(175.223) 08.09 110 0
2879588 중요 부위 제모의 중요성 특유 냄새 제거 가능 넥도리아(220.74) 08.09 60 0
2879586 한국에서 살아가는법 프갤러(61.79) 08.09 68 0
2879572 말로는 프로그래밍 방법론 전문가 [2] ㅇㅇ(211.234) 08.09 115 5
2879569 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.09 47 0
2879564 엄마 초심 잃었는데 어떻게 된거냐 야발 ㅇㅅㅇ... [1] ㅇㅇ(223.39) 08.09 73 0
2879556 [속보]관세문제 해결 안됬다 한국경제 최악의 리스크 2찢명 ♥냥덩이♥갤로그로 이동합니다. 08.09 71 0
2879555 개발자는 디지털 사법고시다 프갤러(106.101) 08.09 94 0
2879553 시발 존나무서운 요즘 초딩 6학년 근황ㄷㄷ.jpg ㅇㅇ(113.192) 08.09 129 0
2879551 검은 잠자리..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.09 97 0
2879550 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.09 59 1
2879549 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.09 82 0
2879541 깨어있는자는 나뿐인가.. 현무E공인(58.225) 08.09 70 0
2879536 오후9시취침 새벽4시기상 미라클모닝 시작 현무E공인(58.225) 08.09 76 0
2879507 그립읍니다 ㅇㅇ(49.165) 08.09 72 0
2879490 죽어서 말하는 ‘김애란’…미군 ‘위안부’ 피해자 넘어 인권 활동가 발명도둑잡기갤로그로 이동합니다. 08.09 46 0
2879489 국가보안법과 차별금지법의 관계 발명도둑잡기갤로그로 이동합니다. 08.09 82 0
2879488 “팔레스타인에 따뜻한 한 끼를” 손흥민, 후원 호소 발명도둑잡기갤로그로 이동합니다. 08.09 70 0
2879487 LLM은 제미니가 갑이다 나르시갤로그로 이동합니다. 08.09 91 0
뉴스 MJ(써니사이드)·지환(순순희), 오늘(17일) ‘사랑해요’ 리메이크 음원 발매! 디시트렌드 08.18
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2