알고리즘

프로그래머스 - 서울에서 김서방 찾기

Heidong 2022. 6. 4. 17:49
반응형

 

내 풀이

public class P_21 {
	
	public String solution(String[] seoul) {
        String answer = "";
        
        for(int i=0; i<seoul.length; i++) {
        	if(seoul[i].equals("Kim")) {
        		answer = String.valueOf(i);
        	}
        }
        
        return "김서방은 " + answer + "에 있다";
    }
	
	
	public static void main(String[] args) {
		// 서울에서 김서방 찾기
		
		P_21 p = new P_21();
		String [] x = {"Jane", "Kim"};
		
		System.out.println(p.solution(x));
		
	}

}

단순하게 반복문 돌려서 인덱스를 찾았다.

 

다른 사람들의 풀이를 보면서 느낀점은 반복문 중간에 if 문의 조건이 활성화 되었을 경우 break를 걸어주면 반복문이 덜 돌기 때문에 효율적이라는 댓글을 보았다.

확실히 굳이 원하는 인덱스를 찾았으면 나머지까지 볼 필요 없이 반복문을 빠져나오는게 훨씬 효율적이다.

 

수정한 코드

for(int i=0; i<seoul.length; i++) {
    if(seoul[i].equals("Kim")) {
        answer = String.valueOf(i);
        break;
    }
}

 

다른 사람 풀이

public String findKim(String[] seoul){
        //x에 김서방의 위치를 저장하세요.
        int x = Arrays.asList(seoul).indexOf("Kim");

        return "김서방은 "+ x + "에 있다";
    }

 

Arrays.asList() 를 통해서 배열 seoul을 list로 담는다.

리스트 안에서 특정 요소의 인덱스를 찾기 위해서 indexOf를 사용한다.

결과적으로 반환 되는 값은 int 이기 때문에 int로 잡는다.

반응형