본문 바로가기

개발 노트/알고리즘[Kotlin]

프로그래머스 알고리즘 문제[서울에서 김서방 찾기]

# 문제

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

 

 

# 제한사항

seoul은 길이 1 이상, 1000 이하인 배열입니다.
seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
"Kim"은 반드시 seoul 안에 포함되어 있습니다.

 

 

# 입출력 예

ex) seoul = ["Jane", "Kim"]   / return = "김서방은 1에 있다"

 

 

 

# 풀이

class Solution {
    
   fun solution(seoul: Array<String>): String {
        var answer = ""

        for(i in 0..seoul.size-1){

            if(seoul[i] == "Kim"){
                answer = "김서방은 ${i}에 있다"
            }
        }

        return answer
    }
    
}

 

-> for문을 사용해서 0부터 seoul의 사이즈 -1 만큼 인덱스를 돌다가

Kim이 있으면 그것의 인덱스 값을 리턴하도록 했다

size말고 count를 사용해도 된다

 

 

 

# 다른 사람의 풀이

class Solution {
    
    fun solution(seoul: Array<String>): String {
        var answer = ""
        
        answer = "김서방은 ${seoul.indexOf("Kim")}에 있다"
        return answer
    }
}

 

-> indexOf를 사용해서, Kim에 해당하는 인덱스를 바로 가져오도록해서 더 간단하게 코드를 짤 수 있다

indexOf는 공통된 요소가 있으면 제일처음에 있는 요소의 인덱스를 반환해준다!

 

 

- indexOf 예시 코드

fun main() {
    val values = listOf(4, 7, 2, 5, 1, 9, 5, 3)
    val item = 5
 
    val index = values.indexOf(item)
    println(index)        // 3
}

 

-> 5가 3번째 인덱스와 7번째 인덱스에 두개가 있는데 indexOf(5)를 출력하면 처음에 있는 3번째 인덱스를 출력해준다