본문 바로가기

알고리즘

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

[문제 설명]

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

[제한 사항]

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

[입출력 예]

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

풀이과정

import java.util.*;

class Solution {
    public String solution(String[] seoul) {
Map<Integer, String> map = new HashMap<Integer, String>();
        
        for(int i =0; i< seoul.length; i++)
        {
            map.put(i, seoul[i]);
            //1. jane
            //2. kim
        }
        
        for(int i = 0; i<map.size(); i++)
        {
            if(map.containsValue("Kim"))
            {
                idx = i; 
                
            }
        }
 }

처음에 문제를 보고 아, MAP 에 넣고 값 돌리면 되겠다 해서 아래처럼 풀었더니 테스트케이스는 다 맞는데

효율성 0점이 떴다.

생각해보니 왜 굳이 다시 MAP에 넣었지 ? 하고

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

        for(int i = 0; i < seoul.length; i++){
            if(seoul[i].equals("Kim")){
                answer = "김서방은 " + i + "에 있다";
                break;
            }
        }
        
        return answer;
    }
}

[느낀점]

위에랑 같이 풀어서 효율성 만점으로 통과 !

 

예전엔 그냥 무조건 테스트케이스만 맞으면 와 ! 풀었다 했고,

회사에서 개발을 해서 기능이 구현되기만 하면 됐다고 생각했는데

시간이 지날수록 코드 품질이 중요하다는 생각이 든다.

-

품질 좋은 코드를 짤 수 있는 개발자가 되고싶다.