디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 136 추천 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/11/17 - -
AD 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
2877024 윤상현 나경원 김문수 김용태 양향자 조경태 임이자 포함 국힘 당원 면상보 넥도리아(220.74) 08.01 135 0
2877022 어디 해보자고 누가 이기는지. 죽자고 달려들면 안될 거 업거들랑? 넥도리아(220.74) 08.01 72 0
2877020 그리고 토스 코드 지피티에 물어보면 다르게 나오잖아 [4] ㅆㅇㅆ(124.216) 08.01 159 0
2877019 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.01 114 0
2877018 드래그 앤 드롭 존나 어렵네 [2] ㅇㅇ(223.38) 08.01 132 0
2877016 참 짜다 [2] 배구공(119.202) 08.01 124 0
2877013 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.01 118 0
2877012 걍 체이닝이라는 방법을 몰라서 시비거는거 같아서 설명함 [13] ㅆㅇㅆ(124.216) 08.01 190 0
2877011 윤상현 포함 권성동 딱 갈이들 선비들 면상좀 볼까 양반인지 천민인지 배달 넥도리아(220.74) 08.01 101 0
2877010 근데 .gitignore 이거 모를수도 있지 않냐? SVN 쓰면 ㅆㅇㅆ(124.216) 08.01 116 0
2877009 한 번 시위를 해볼까 생각이다. 넥도리아(220.74) 08.01 106 0
2877008 좀 시비를 걸꺼면 제대로 알고 시비걸던지 프갤 놈들치고 [7] ㅆㅇㅆ(124.216) 08.01 137 0
2877007 내가 본 15 년 경력자. [3] 프갤러(59.16) 08.01 136 0
2877006 서버가 아니라 코틀린 컨벤션 문제니까 씨발ㅋㅋ틀렸단걸 알지 ㅆㅇㅆ(124.216) 08.01 122 0
2877005 소녀상 테러 반일은 정치병이라고 아줌마 당신은 정신이 없어. 넥도리아(220.74) 08.01 103 0
2877004 ㅆㅇㅆ가 대단한 이유 ㄷ [7] 프갤러(211.36) 08.01 160 0
2877003 휴 오늘도 공부시작 노력하는자갤로그로 이동합니다. 08.01 105 0
2876998 연예인이랑 마주친 적이 없어요. 아 사촌동생은 아이유 팬카페 회원이래 넥도리아(220.74) 08.01 85 0
2876996 고추가 미치겠다... 여자가 아니야 난.. 넥도리아(220.74) 08.01 98 0
2876995 번개로 여자 만나면, 번개같은 여자랑 사귀는거냐? 넥도리아(220.74) 08.01 74 0
2876993 김건희가 최은순이 짜고 치고 하얀소닉 이민구 죽이면 레전드 넥도리아(220.74) 08.01 95 0
2876991 밥 먹고 싶구나 히트 넥도리아(220.74) 08.01 82 0
2876989 야동보다가 미쳐 버림. 너무 힘든데 자기 싫어 삶을 마무리 하기 싫다. 넥도리아(220.74) 08.01 134 0
2876988 ㅆㅇㅆ는 왜 저 실력가지고 저렇게 살지 [1] ㅇㅇ(118.235) 08.01 132 1
2876968 즐거움에는 괴로움이 따른다. ㅇㅇ(183.101) 08.01 83 1
2876966 욕구로부터 자유로워지면 즐거움도 괴로움도 사라진다. ㅇㅇ(183.101) 08.01 63 0
2876927 아 내일까지 납품인데 솔직히 존나 하기 싫다 [3] ㅆㅇㅆ(124.216) 08.01 158 1
2876919 토스 모범답안 코드는 코틀린 코드가 아니라 자바 코드임 ㅆㅇㅆ(124.216) 08.01 147 0
2876910 내 생각은 그럼, 결국 테스트 저거는 암기영역이니 ㅆㅇㅆ(124.216) 08.01 83 0
2876908 코테 문제들 보는데 애초에 도메인 관점에서 짜면 안되는 코드를 ㅆㅇㅆ(124.216) 08.01 351 0
토스 코틀린 코드가 뭔가 해서 보는데 이것도 걍 C스타일이든데 ㅆㅇㅆ(124.216) 08.01 136 1
2876906 토스가 짜라는 코드 보는데 걍 시간 아깝던데 ㅆㅇㅆ(124.216) 08.01 161 0
2876905 토스 코테 보는데 저렇게 코드짜면 솔직히 좀 애매하던데 [4] ㅆㅇㅆ(124.216) 08.01 458 0
2876904 토스가 예전에 자기들코테 모범답안이라고 올린거보니 현타옴 [3] 밀우갤로그로 이동합니다. 08.01 192 0
2876903 흔히들 공산주의가 되면 배급이 전부 나뉘어서 노력 안한다하는데 ㅆㅇㅆ(124.216) 08.01 91 0
2876902 애초에 자본주의 체제의 모순점을 학문으로 정립한게 공산주의긴함 ㅆㅇㅆ(124.216) 08.01 89 0
2876897 로마 공화정은 심각한 빈부격차로 망했다고 함 [10] 아스카영원히사랑해갤로그로 이동합니다. 08.01 152 0
2876896 얼마 전에 행사 홈페이지 돈 받고 제작해줬는데 [1] ㅇㅇ갤로그로 이동합니다. 08.01 94 0
2876893 운전병 존나 억울한게 프갤에서만 꿀이라는 이미지가 강함 ㅇㅇ(211.193) 07.31 71 0
2876876 사이카는 예술 같다. SONE-763 허베이 아야카 너무 좋다. 넥도리아(220.74) 07.31 121 0
2876871 항해 플러스를 시작하고 [2] 어린이노무현갤로그로 이동합니다. 07.31 173 2
2876870 오히려 자기가 너무 좋아하면 매몰되는 경우가 부지기수임 ㅆㅇㅆ(124.216) 07.31 126 0
2876868 나는 게임 싫어해도 게임 잘만들 수 있다 생각함. 문제는 이거임 ㅆㅇㅆ(124.216) 07.31 109 0
2876865 에픽 ceo가 개발자로는 훌륭한데 게임에 관심없는 사람인게 너무 싫다 [3] ㅇㅇ(122.36) 07.31 130 0
2876862 가끔 도메인을 뭐라고 생각하는지 모르겠네 애들이 ㅆㅇㅆ(124.216) 07.31 84 0
2876854 언어든 도메인이든 하나만 파는게 실력에는 더 도움됨 [1] ㅇㅇ(122.36) 07.31 102 0
2876842 이슬점이 중요함 ♥사디스트냥덩♥갤로그로 이동합니다. 07.31 85 0
2876838 근데 모르면 알려주는거<<이게 힘든가 [2] ㅆㅇㅆ(124.216) 07.31 142 0
2876830 ㅇㅅㅇ⭐+ [1] ♥사디스트냥덩♥갤로그로 이동합니다. 07.31 90 0
2876824 민생지원금 2차는 9월22일이네 ㅇㅇ(14.52) 07.31 90 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2