24년 11월 이전/레거시-알고리즘(3)
[프로그래머스 1단계] 알고리즘 15. 서울에서 김서방 찾기
Gurumee
2018. 3. 29. 11:08
반응형
문제 출처는 프로그래머스 알고리즘 연습 에서 볼 수 있습니다!(https://programmers.co.kr/learn/challenges)
알고리즘 15. 서울에서 김서방 찾기
findKim 함수(메소드)는 String형 배열 seoul을 매개변수로 받습니다. seoul의 element중 Kim
의 위치 x를 찾아, 김서방은 x에 있다
는 String을 반환하세요. seoul에 Kim
은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
public class FindKim {
public String findKim(String[] seoul){
//x에 김서방의 위치를 저장하세요.
int x = 0;
return "김서방은 "+ x + "에 있다";
}
// 실행을 위한 테스트코드입니다.
public static void main(String[] args) {
FindKim kim = new FindKim();
String[] names = {"Queen", "Tod","Kim"};
System.out.println(kim.findKim(names));
}
}
풀이 :
이 문제의 풀이는 간단하다. 배열을 순회하면서 "Kim"을 찾으면 그 인덱스를 반환하면 된다. 코드는 다음과 같다.
public String findKim(String[] seoul){
//x에 김서방의 위치를 저장하세요.
int x = 0;
for(String name : seoul){
if(name.equals("Kim"))
break;
x++;
}
return "김서방은 "+ x + "에 있다";
}
뭐 어떻게 풀든 간단하지만 더 간단한 문제 풀이를 제시해보려 한다. 바로 Arrays.asList()를 이용하여 배열을 리스트로써 바꾸어서 문제를 풀게 되면 굉장히 쉽게 문제를 풀 수 있다. 자바의 List는 indexOf(T elem)이라는 메소드를 제공한다. 그 리스트의 해당 요소가 있으면 그 인덱스를 반환하는 함수이다. 코드는 다음과 같다.
public String findKim(String[] seoul){
//x에 김서방의 위치를 저장하세요.
int x = Arrays.asList(seoul).indexOf("Kim");
return "김서방은 "+ x + "에 있다";
}
이렇게 한줄이면 간단하게 끝낼 수 있다. 자바가 제공하는 라이브러리를 이용하지 않아도 되지만 이용할 줄 알면 굉장히 많은 이득이 있기 때문에 그 때 그 때 많이 쓰는 라이브러리들은 따로 공부해도 좋을 것 같다.
728x90
반응형