Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/5648

 

5648번: 역원소 정렬

모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요. 단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니

www.acmicpc.net

 

난이도 : 실버 5
태그 : 정렬

 

 

설명

문제 자체는 쉬웠으나,

입력이 꽤 특이하여 애먹었던 문제였습니다.

처음엔 카운팅 변수를 하나 두고 체크했는데 왜인지 계속 오류가 나서,

BufferedReader를 사용해 null을 입력받을 때 까지 계속 입력받는 방법으로 구현했습니다.

(BufferedReader는 더 이상 입력받을게 없을 경우 null 반환)

 

 

 

소스코드

import java.util.StringTokenizer

fun main() = with(System.`in`.bufferedReader()) {
    val list = ArrayList<String>()
    var str = readLine()

    while (str != null) {
        val st = StringTokenizer(str)
        while (st.hasMoreTokens()) list.add(st.nextToken())
        str = readLine()
    }
    list.removeAt(0)

    val sb = StringBuilder()
    list.map { it.reversed().toLong() }.sorted().forEach { sb.append(it).append("\n") }
    print(sb)
}

 

map 함수는 배열 혹은 리스트의 각 원소를 가공하여 반환합니다.

해당 코드에서는 각 원소를 revsersed(뒤집기) 하고 Long 형태로 변환해 반환하였고,

이를 그대로 sort하여 StringBuilder에 넣고 출력하였습니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.