Note/Coding Test

[프로그래머스] Level 1: 서울에서 김서방 찾기 (Java) 문제 풀이 / 핵심 내용 정리

728x90
반응형
서울에서 김서방 찾기

 

🟢 문제 설명

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

제한 사항
  • seoul은 길이 1 이상, 1000 이하인 배열입니다.
  • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  • "Kim"은 반드시 seoul 안에 포함되어 있습니다.
입출력 예
seoul return
["Jane", "Kim"] "김서방은 1에 있다"

 

풀이 계획

반복문으로 배열을 돌려 Kim을 찾아서 위치 반환하기

 

🍬 Java

나의 문제 풀이

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;
    }
}

다른 사람의 풀이

import java.util.Arrays;

class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        
        int x = Arrays.asList(seoul).indexOf("Kim");
        answer = "김서방은 " + x + "에 있다";
        
        return answer;
    }
}

 

🛶 핵심 정리

java.util.Arrays 클래스

Arrays.asList(배열): 배열을 리스트로 변환

ArrayList의 indexOf()는 객체가 리스트에 존재한다면 인덱스를 리턴한다.

 

* indexOf() 함수의 내부에서도 똑같이 for문을 돌기 때문에 ArrayList 메모리를 할당하는 것은 성능상 유리하지 않음

 

🦉 반성의 시간

나는 우선 문제를 풀어본 뒤 다른 사람의 풀이를 보고 나와 비슷하게 한 코드나 더 좋은 방법으로 코딩한 코드를 살펴본다. 이 문제도 대부분 나와 비슷한 방법으로 구현을 했지만 새로운 표현이 있어서 가져와봤다!

배열에는 인덱스를 찾는 방법이 없기 때문에 리스트로 변환 후 인덱스를 찾는 방법이다.

성능상으로는 좋지 않을 수 있지만 배열을 리스트로 변환해야하는 경우 사용하기 좋겠다.

728x90
반응형