티스토리 뷰
※ 인프런 강의: 개복치개발자님의 [입문편] 안드로이드를 위한 코틀린(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()
}
결과
====================
찬혁
민영
'Kotlin' 카테고리의 다른 글
Kotlin 공부 - 예제, 연습 - #10. 동전 갯수 구하기 (0) | 2022.04.17 |
---|---|
Kotlin 공부 - 예제, 연습 - #8. 작은 값 찾아서 제거하고 남은 숫자 합계 구하기 (0) | 2022.04.16 |
Kotlin 공부 - 예제, 연습 - #7. 알파벳 숫자 세기 (0) | 2022.04.16 |
Kotlin 공부 - 예제, 연습 - #6. Factorial(팩토리얼) (0) | 2022.04.16 |
Kotlin 공부 - 예제, 연습 - #5 거꾸로 반환하기 (0) | 2022.04.15 |
댓글