디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 111 추천 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 - -
2878740 흑녀 은발금발 개존꼴 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 100 0
2878739 ai대체가능성은 ai의 접근성으로 판단하면됨 네오커헠(211.234) 08.06 127 0
2878737 술자리에서 발명도둑잡기갤로그로 이동합니다. 08.06 90 0
2878736 조나단도 2억넘는 포르쉐 뽑고 곽튜브도 연애 3번했는데 뒷통수한방(1.213) 08.06 95 0
2878735 유니티 시작할게요 [1] 루도그담당(58.239) 08.06 113 0
2878734 인생 뭔 재미로 흠 [1] 프갤러(61.79) 08.06 104 0
2878733 지잡전문대 출신 전공자 기준 연봉 평가좀 [4] 프갤러(211.235) 08.06 202 0
2878732 애널의달성 2.5//4 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 95 0
2878730 가끔가다 면접 가도 [1] 무관갤로그로 이동합니다. 08.06 135 0
2878729 故송영규·강린·이민까지···일주일 새 연이은 충격 비보 발명도둑잡기갤로그로 이동합니다. 08.06 110 0
2878727 일단 확실한건 ai가 펌웨어는 대체못함 [2] 네오커헠(211.234) 08.06 178 0
2878725 30대 냥덩이 수억 재산 형성 과정 얼마나 떳떳할까 발명도둑잡기갤로그로 이동합니다. 08.06 97 0
2878723 정신지체 좌폐아 = 영포티 ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 93 0
2878722 바이브 코딩이 프로그래머 대체한다는 소리를 어떻게 보냐면 [9] ㅆㅇㅆ(124.216) 08.06 213 0
2878721 김태희 근황 [1] ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 205 1
2878720 바이브 코딩이 프로그래머 대체한다=LLM이 소설가 대체한다 [10] ㅆㅇㅆ(124.216) 08.06 203 0
2878719 방금 세무사 상담 받았음 [2] 어린이노무현갤로그로 이동합니다. 08.06 139 0
2878718 220.84 최근 글과 애즈원 사망 발명도둑잡기갤로그로 이동합니다. 08.06 134 0
2878716 1965년 메뉴판 [1] 발명도둑잡기갤로그로 이동합니다. 08.06 92 0
2878715 대기업들 미국으로 전부 이전하든 니들이 앰생인건 똑같잖아 ㅋㅋㅋ [1] 뒷통수한방(1.213) 08.06 105 0
2878714 50대에 10억도 못 모은 사람들은 뭐냐? ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 119 0
2878713 경력 웹에이전시가면 병신임? 프갤러(180.71) 08.06 106 0
2878710 220.84 발명도둑잡기갤로그로 이동합니다. 08.06 106 0
2878709 나는 바이브 코딩 논쟁 의미 없다 생각하는게 [4] ㅆㅇㅆ(124.216) 08.06 170 0
2878706 中공산당 아닌 日이 범인? 대만 뒤집은 TSMC 기술유출 사건 발명도둑잡기갤로그로 이동합니다. 08.06 80 0
2878704 넷플릭스에 밀린 ‘토종 OTT’ 왓챠, 기업회생 절차 개시 발명도둑잡기갤로그로 이동합니다. 08.06 115 0
2878702 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 86 0
2878701 취미로 할거면 [1] GptPRO(14.41) 08.06 123 0
2878700 내가 자바 코딩을 vscode 로 하는 이유. [2] 프갤러(59.16) 08.06 185 0
2878698 저희집 문제인데 가이드... 넥도리아(223.38) 08.06 98 0
2878697 학은제 컴공 해본 애들 있어? 프갤러(175.210) 08.06 131 0
2878693 후후 내가 차단안당하려고 프갤러 기본 닉네임을 쓰고 있지 프갤러(218.154) 08.06 110 0
2878689 키오스크같은 ㅈ밥ui는 일렉트론으로떡침 [3] 네오커헠(211.234) 08.06 243 0
2878686 좇센징 특징 ) 304050쳐먹어도 리니지 메이플 함 ㅋㅋㅋ 뒷통수한방(1.213) 08.06 105 0
2878685 이거 리소스만 알면 ㅇㅇ갤로그로 이동합니다. 08.06 195 0
2878684 마크하는새끼들은 하나같이 좇같은새끼들만있는이유가 뭐냐 뒷통수한방(1.213) 08.06 97 0
2878683 좆텔리제이에 자바가 강하게 엮여있다는게 뭐냐면 [1] 프갤러(218.154) 08.06 147 0
2878682 [단독] '애즈원' 이민, 5일 저녁 사망…자택에서 숨진 채 발견 발명도둑잡기갤로그로 이동합니다. 08.06 109 0
2878681 흠 로보틱스개발자로서 최후의개발자가 될운명이군 [3] 네오커헠(1.237) 08.06 221 0
2878680 동남아 평균 월급 발명도둑잡기갤로그로 이동합니다. 08.06 125 0
2878679 그럼 너무 늘어지는데.. ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 92 0
2878678 흠.. 상위 플랫폼까지 동시에 하는게 맞으려나? ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 91 0
2878677 비가 추적추적 [4] 개멍청한유라갤로그로 이동합니다. 08.06 127 0
2878676 "나 좀 포기해줘" 고백 빌런 짝사랑남에게 싹싹 빈 여성 발명도둑잡기갤로그로 이동합니다. 08.06 96 0
2878675 대기업들 미국으로 전부 이전하든 니들이 앰생인건 똑같잖아 ㅋㅋㅋ 뒷통수한방(1.213) 08.06 81 0
2878674 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥꽃보다냥덩♥갤로그로 이동합니다. 08.06 77 0
2878672 깜짝 놀란 광고 발명도둑잡기갤로그로 이동합니다. 08.06 85 0
2878670 임베디드는 절!대!로! 가지마라 [2] 박민준갤로그로 이동합니다. 08.06 298 0
2878669 남친이 컴공인데요 발명도둑잡기갤로그로 이동합니다. 08.06 141 0
2878668 [두산로보틱스] 로키부트캠프 AI·로봇 엔지니어 양성과정 6기 모집 (~ 프갤러(14.32) 08.06 204 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2