티스토리 뷰

※ 인프런 강의: 개복치개발자님의 [입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 강의 내 예제이며, solution #1은 제가 작성한 코드이고, soultion-#2는 강의 예제에서 제시한 코드입니다.


 

  • soultion - #1: 입력받은 문자열을 특정 문자를 기준으로 분리하여 List로 만든 후 map에 저장, map을 list로 변환한 후 sortBy 사용하여 정렬. List 첫 번째값의 first가 곧 가까운 사람의 이름
// 이름 : 집까지의 거리
// 집까지 거리가 가장 가까운 사람의 이름을 알려주는 함수를 완성하세요
// 거리는 음수가 아닙니다 / 같은 거리는 없습니다.

fun main(){

    val result1 = solution("민수 : 3, 민지  : 4, 찬혁 : 1.5, 지우 : 2")
    println(result1)
    // 찬혁

    val result2 = solution("지영 : 3.7, 민영  : 1.2 , 해피 : 2.7, 퍼니 : 3")
    println(result2)
    // 민영
}

fun solution(str: String) : String{
	
    var resultName : String = "이름"
    var nameDistanceMap = mutableMapOf<String, Float>()
    
    // 하나의 String을 List로 변환
    val tempList = str.split(",")
	println(tempList)
    
    // 이름: 거리로 이루어진 리스트의 각 값을 :을 기준으로 분리한 후, map의 key와 value로 각각 저장
    for(i in tempList){
        
        // :을 기준으로 분리해서 좌측은 key에 우측은 value에 저장. 공백이 있으므로 공백도 제거. 소숫점이 있으므로 실수형으로도 변환
        var name = i.split(":")[0].replace(" ","")
        var distance = i.split(":")[1].replace(" ","").toFloat()
        
        nameDistanceMap[ name ] = distance
    }
    println( "map:" + nameDistanceMap)
    
    // map을 List로 변환
    val temp_maplist : List< Pair<String, Float> > = nameDistanceMap.toList()
    println( "map을 List로 변환:" + temp_maplist )
    
    // 리스트를 정렬이 가능한 mutableList로 변환
    val temp_mutableMaplist = temp_maplist.toMutableList()
    
    // 거리 기준으로 오름차순 정렬
    temp_mutableMaplist.sortBy { it.second }
    println( "거리 기준으로 오름차순 정렬:" + temp_mutableMaplist)
    
    // 리스트 첫 번째 값의 first가 거리가 가장 짧은 사람의 이름
    // println(temp_mutableMaplist[0].first)
    
    return temp_mutableMaplist[0].first
}

결과
====================
[민수 : 3,  민지  : 4,  찬혁 : 1.5,  지우 : 2]
map:{민수=3.0, 민지=4.0, 찬혁=1.5, 지우=2.0}
map을 List로 변환:[(민수, 3.0), (민지, 4.0), (찬혁, 1.5), (지우, 2.0)]
거리 기준으로 오름차순 정렬:[(찬혁, 1.5), (지우, 2.0), (민수, 3.0), (민지, 4.0)]
찬혁
[지영 : 3.7,  민영  : 1.2 ,  해피 : 2.7,  퍼니 : 3]
map:{지영=3.7, 민영=1.2, 해피=2.7, 퍼니=3.0}
map을 List로 변환:[(지영, 3.7), (민영, 1.2), (해피, 2.7), (퍼니, 3.0)]
거리 기준으로 오름차순 정렬:[(민영, 1.2), (해피, 2.7), (퍼니, 3.0), (지영, 3.7)]
민영
  • solution -#2 : 이름 리스트와 거리 리스트를 따로 만든 후, 거리 리스트에서 최소값의 index를 indexOf를 이용해 찾은 후,해당 index의 이름 리스트 내 값을 출력
// 가장 가까운 사람의 이름을 알려주는 함수를 완성하세요
// 거리는 음수가 아닙니다 / 같은 거리는 없습니다.

fun main(){

    val result1 = solution("민수 : 3, 민지  : 4, 찬혁 : 1.5, 지우 : 2")
    println(result1)
    // 찬혁

    val result2 = solution("지영 : 3.7, 민영  : 1.2 , 해피 : 2.7, 퍼니 : 3")
    println(result2)
    // 민영

}

fun solution(str: String) : String {

    val list = str.split(",")
    //println(list)

    val nameList = mutableListOf<String>()
    val distanceList = mutableListOf<Double>()

    for (item in list) {

        val name = item.split(":")[0]
        val distance = item.split(":")[1].toDouble()

        nameList.add(name)
        distanceList.add(distance)

    }

    //println(nameList)
    //println(distanceList)

    val minDistance = distanceList.minOrNull()

    //println(minDistance)

    val resultIndex = distanceList.indexOf(minDistance)

    //println(resultIndex)

    return nameList[resultIndex].trim()
}

결과
====================
찬혁
민영
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함