디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2025.08.01 01:02:34
조회 120 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 영포티룩도 멋지게 소화할 것 같은 40대 스타는? 운영자 25/10/27 - -
AD 할로윈 슈퍼위크~!! 운영자 25/10/23 - -
2876919 토스 모범답안 코드는 코틀린 코드가 아니라 자바 코드임 ㅆㅇㅆ(124.216) 08.01 130 0
2876910 내 생각은 그럼, 결국 테스트 저거는 암기영역이니 ㅆㅇㅆ(124.216) 08.01 80 0
2876908 코테 문제들 보는데 애초에 도메인 관점에서 짜면 안되는 코드를 ㅆㅇㅆ(124.216) 08.01 341 0
토스 코틀린 코드가 뭔가 해서 보는데 이것도 걍 C스타일이든데 ㅆㅇㅆ(124.216) 08.01 120 1
2876906 토스가 짜라는 코드 보는데 걍 시간 아깝던데 ㅆㅇㅆ(124.216) 08.01 150 0
2876905 토스 코테 보는데 저렇게 코드짜면 솔직히 좀 애매하던데 [4] ㅆㅇㅆ(124.216) 08.01 442 0
2876904 토스가 예전에 자기들코테 모범답안이라고 올린거보니 현타옴 [3] 밀우갤로그로 이동합니다. 08.01 179 0
2876903 흔히들 공산주의가 되면 배급이 전부 나뉘어서 노력 안한다하는데 ㅆㅇㅆ(124.216) 08.01 84 0
2876902 애초에 자본주의 체제의 모순점을 학문으로 정립한게 공산주의긴함 ㅆㅇㅆ(124.216) 08.01 80 0
2876897 로마 공화정은 심각한 빈부격차로 망했다고 함 [10] 아스카영원히사랑해갤로그로 이동합니다. 08.01 142 0
2876896 얼마 전에 행사 홈페이지 돈 받고 제작해줬는데 [1] ㅇㅇ갤로그로 이동합니다. 08.01 90 0
2876893 운전병 존나 억울한게 프갤에서만 꿀이라는 이미지가 강함 ㅇㅇ(211.193) 07.31 65 0
2876876 사이카는 예술 같다. SONE-763 허베이 아야카 너무 좋다. 넥도리아(220.74) 07.31 105 0
2876871 항해 플러스를 시작하고 [2] 어린이노무현갤로그로 이동합니다. 07.31 154 2
2876870 오히려 자기가 너무 좋아하면 매몰되는 경우가 부지기수임 ㅆㅇㅆ(124.216) 07.31 116 0
2876868 나는 게임 싫어해도 게임 잘만들 수 있다 생각함. 문제는 이거임 ㅆㅇㅆ(124.216) 07.31 103 0
2876865 에픽 ceo가 개발자로는 훌륭한데 게임에 관심없는 사람인게 너무 싫다 [3] ㅇㅇ(122.36) 07.31 126 0
2876862 가끔 도메인을 뭐라고 생각하는지 모르겠네 애들이 ㅆㅇㅆ(124.216) 07.31 81 0
2876854 언어든 도메인이든 하나만 파는게 실력에는 더 도움됨 [1] ㅇㅇ(122.36) 07.31 96 0
2876842 이슬점이 중요함 ♥사디스트냥덩♥갤로그로 이동합니다. 07.31 78 0
2876838 근데 모르면 알려주는거<<이게 힘든가 [2] ㅆㅇㅆ(124.216) 07.31 133 0
2876830 ㅇㅅㅇ⭐+ [1] ♥사디스트냥덩♥갤로그로 이동합니다. 07.31 86 0
2876824 민생지원금 2차는 9월22일이네 ㅇㅇ(14.52) 07.31 85 0
2876821 오늘 큰 결심했다 프갤러(113.59) 07.31 67 0
2876820 뒤에 꽂으니까 되네요... 넥도리아(220.74) 07.31 78 0
2876819 돈 보람 능력 [1] 개멍청한유라갤로그로 이동합니다. 07.31 117 0
2876818 후훗.. [3] 딱준(61.253) 07.31 107 0
2876814 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ [2] ♥사디스트냥덩♥갤로그로 이동합니다. 07.31 83 0
2876810 웹앱땔깜들의 동기가 사그러져가는것이보인다 [1] 네오커헠(211.234) 07.31 136 0
2876809 밥 먹고 싶다. 해결하고, 엄마가 밥 안주심. [2] 넥도리아(220.74) 07.31 106 0
2876803 이거 해줘 One 으뜸 원 넥도리아(220.74) 07.31 94 0
2876797 나님 주무시려구 누엇어양⭐+ ♥사디스트냥덩♥갤로그로 이동합니다. 07.31 68 0
2876794 450gb 의 프로그래밍 소스가 있다. 넥도리아(220.74) 07.31 59 0
2876791 흠 개발입문할때 하노이탑 별찍기 같은거 하지않나? 네오커헠(211.234) 07.31 92 0
2876788 도리스아 현재 상황 [6] 넥도리아(220.74) 07.31 92 0
2876786 이거 잡아버리는 사람 천재로 인정함. [14] 넥도리아(220.74) 07.31 155 0
2876784 중국도 배구공(119.202) 07.31 87 0
2876783 블라인드에서 몇몇 사람 보니까 기분 졸라 이상함 [7] ㅇㅇ(118.235) 07.31 179 0
2876782 미국 [2] 배구공(119.202) 07.31 78 0
2876781 여기선 내가 왕인데 ㅋㅋ [1] 프갤러(121.139) 07.31 85 0
2876780 나님두 이민준비즁~ 친중매국배급견들만 남거라~ [3] ♥수학자냥덩♥갤로그로 이동합니다. 07.31 102 0
2876779 프로그래밍 고수와 하수의 차이 [3] 프갤러(121.139) 07.31 138 0
2876778 Last Chance of Idle Boyes and GDrairls 넥도리아(220.74) 07.31 61 0
2876776 개발 이제 1년찬데 백엔드 공통파트 제의가 들어옴 ㅇㅇ(106.101) 07.31 109 0
2876775 기록은 역사입니당⭐+ ♥수학자냥덩♥갤로그로 이동합니다. 07.31 58 0
2876774 버블디아씨 열심히 살지않냐? [3] 헬마스터갤로그로 이동합니다. 07.31 132 0
2876773 일단 웹앱땔깜들은 개발을 즐길줄을 모름 [1] 네오커헠(1.237) 07.31 291 0
2876772 여기있는 새끼들 지금이라도 정신차리고 [4] 프갤러(121.139) 07.31 132 5
2876770 웹할줄 모르는데 웹하라는데 리액트 어캐 배워야 하냐? [2] 프갤러(1.237) 07.31 127 0
2876769 가사노동 시키구 싶은.. ♥수학자냥덩♥갤로그로 이동합니다. 07.31 64 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2