코딩뿌시기(연습)

[Java] 서울에서 김서방 찾기

thisnorm 2025. 1. 20. 14:49

문제 설명

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

 

 

제한 사항

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

 

 

 

 

입출력 예

seoul
return
["Jane", "Kim"]
"김서방은 1에 있다."

 

 


이번 문제는 말을 이해하는 데 있어서 조금 걸렸다.

문제가 원하는 solution은 seoul 배열에서 Kim의 인덱스 위치를 파악하여

return 값으로 "김서방은 [인덱스 위치]에 있다." 를 원하는 것이었다.

 

 

 

그냥 일단 마음이 가는데로 코딩을 해보았다.

class Solution {
    public String solution(String[] seoul) {
        int answer = 0;
        
        if(1 <= seoul.length && seoul.length <= 1000) {
            for(int i = 0; i < seoul.length; i++) {
                if(seoul[i].length() < 1 || seoul[i].length() > 20)
                    break;
                if(seoul[i] == "Kim") {
                    System.out.println("김서방은 "+answer+"에 있다.");
                }
                else
                    answer++;
            }
        }
    }
}

디버깅을 해보니깐 코드가 안돌아갔다.

문제를 확인해보니 문자열을 비교할 때는 seoul[i].equals("Kim")를 사용해야하는데

숫자를 비교하듯이 해버렸다.

그래서 코드를 다시 완성해보면

class Solution {  
    public String solution(String[] seoul) {   
        if (1 <= seoul.length && seoul.length <= 1000) {  
            for (int i = 0; i < seoul.length; i++) {  
                if (1 <= seoul[i].length() && seoul[i].length() <= 20){ 
                    if (seoul[i].equals("Kim")) {  
                        return "김서방은 " + i + "에 있다";  
                    }  
                } else {
                    return "";
                }  
            }  
        }  
        return "";  
    }  
}

이번엔 "Kim"이 없을 시에 반환값까지 넣어주었다.