프로그래머스/Lv. 1

[프로그래머스 코딩테스트] 서울에서 김서방 찾기(Java)

Sigfriede 2023. 4. 7. 19:02

  문제 설명

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

 

  제한사항

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

 

  입출력 예

seoul return
["Jane", "Kim"] "김서방은 1에 있다"
import java.util.Arrays;
class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        int index = Arrays.asList(seoul).indexOf("Kim");
        return answer.format("김서방은 %s에 있다", index);
    }
}

  seoul 배열에서 "Kim"의 인덱스 위치를 찾는 문제입니다. 조건에서 "Kim"은 반드시 seoul 안에 포함되어 있다고 설명하므로, 다른 조건문은 필요하지 않을 듯합니다.

  Arrays 클래스의 asList 메소드로 배열을 List로 변환하는 것입니다. indexOf는 객체 배열이 아닌 배열(int, double, boolean 등)에서는 사용할 수 없으므로, List 형태로의 변환이 필요합니다. 이후 문자열 포매팅을 사용하여 answer로 반환하였습니다. 일반적인 문자열 합치기를 사용해도 무방합니다.

  for문과 equals를 사용하여 풀이해도 역시 같은 결과를 낼 수 있습니다. 그러나 Arrays 클래스의 binarySearch() 메소드는 사용할 수 없습니다. 이는 배열이 이미 정렬되어 있다는 가정하에 동작하기 때문입니다. seoul 배열은 정렬되어 있는지 여부를 알 수 없고, 만약 정렬되지 않은 상태의 배열이라면 잘못된 결과를 반환할 수 있습니다.