Algorithm/Programmers(Java)

[프로그래머스/Lv.1] 서울에서 김서방 찾기

비망노트 2022. 12. 13. 22:46

문제 설명

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

 

제한사항

- 입력된 수, num은 1 이상 8,000,000 미만인 정수입니다
- seoul은 길이 1 이상, 1000 이하인 배열입니다.
- seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
- "Kim"은 반드시 seoul 안에 포함되어 있습니다.

 

입출력 예

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

 

⭕ 풀이

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

        int idx = 0;
        while(true){
            if("Kim".equals(seoul[idx])){
                break;
            }
            idx++;
        }
        answer = "김서방은 "+idx+"에 있다";
        return answer;
    }
}

 

✅ 흐름

1. 입력받은 문자열배열의 각 인덱스를 idx변수로 반복하며 "Kim"과 같은지 비교한다.

2. while로 무한반복을 돌려놓고 찾는다면 break로 탈출한 뒤 idx를 answer에 넣어 사용한다,

 

문제에 "Kim"은 오직 한 번 나타나며, 잘못된 값이 입력되는 경우는 없다고 나와있어

while 무한반복을 돌려도 되었고 만약 해당조건이 없었다면 seoul.length 로 했어야 할것이다.

또한 전체탐색을 해야하는 문제가 아니고 한 번만 나오는 전제조건이 있으므로

"Kim"을 찾았다면 break를 해주어야 조금이라도 낭비를 줄일 수 있다.

 

 

 

-출처

https://school.programmers.co.kr/learn/courses/30/lessons/12919