개발/Java

자바 알고리즘 - 서울에서 김서방 찾기 (배열에서의 위치 찾기)

냐냐_ 2021. 3. 31. 23:20
String 배열 seoul에서, "Kim"의 위치(인덱스) x를 찾아서
"김서방은 x에 있다" 라는 문장을 반환하자.

* "Kim"은 반드시 seoul 안에 포함되어 있다.

ex)
["Jane", "Kim"] ▶ "김서방은 1에 있다"
["Mary", "James", "Kim"] ▶ "김서방은 2에 있다"

 

class Solution {
    public String solution(String[] seoul) {
        
        String answer = "";

        return answer;
    }
}

 

모든 알고리즘 연습문제가 그렇듯 이 역시 간결하고 엣지있는 정답 코드가

블로그에 많고 많지만!

내가 직접 짠, 내게 익숙한 버전으로 정리하기.

 

 

 

 

 

접근 포인트

 

반복문을 통해 seoul 배열에서 "Kim"을 찾아내되,

찾아내고 나면 끝까지 반복하지 않아도 되게끔 해봐야지!

 

 

 

 

 

최종 코드

 

class Solution {
    public String solution(String[] seoul) {
        
        String answer = "";
        int i = 0;
        
        while (i < seoul.length) {
            if (seoul[i].equals("Kim")){
                answer = "김서방은 " + i + "에 있다";
                break;
            }
            i++;
        }

        return answer;
    }
}

 

먼저 텅 빈 문자열을 answer로 선언하고,

while문을 돌리기 위해 i값도 선언해 주었다.

 

for문이 아닌 while문을 사용한 이유는

김서방 찾고 나면 굳이 끝까지 돌지 말고 중간에 멈추어서 (break)

성능을 조금이라도 올려 보고자 함!

 

아무리 많이 돌아야 seoul이라는 문자열 배열 길이보다 더 돌지 않으니

반복 조건은 i < seoul.length로 잡아주고,

일치 여부는 equals( ) 메소드로 판별하였다.

 

일치할 경우에만(if문 조건) answer가 원하는 문장의 값을 갖게 되고

break를 통해 while문을 멈춘다.

 

일치하지 않을 때에는(if문을 타지 않음)

i++; 를 통해 i값을 하나씩 올리면서 반복을 타게 만든다.