[알고리즘 문제풀이] 서울에서 김서방찾기
문제 및 답안 출처: http://www.tryhelloworld.co.kr
문제
findKim 함수(메소드)는 String형 배열 seoul을 매개변수로 받습니다.
seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하세요.
seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
public class FindKim {
public String findKim(String[] seoul){
//x에 김서방의 위치를 저장하세요.
int x;
for(x=0;x<seoul.length;x++){
if(seoul[x] == "Kim"){
break;
}
}
return "김서방은 "+ x + "에 있다";
}
// 실행을 위한 테스트코드입니다.
public static void main(String[] args) {
FindKim kim = new FindKim();
String[] names = {"Queen", "Tod","Kim"};
System.out.println(kim.findKim(names));
}
}
나의 답
public class FindKim { public String findKim(String[] seoul){ //x에 김서방의 위치를 저장하세요. int x; for(x=0;x<seoul.length;x++){ if(seoul[x] == "Kim"){ break; } } return "김서방은 "+ x + "에 있다"; } // 실행을 위한 테스트코드입니다. public static void main(String[] args) { FindKim kim = new FindKim(); String[] names = {"Queen", "Tod","Kim"}; System.out.println(kim.findKim(names)); } }
저는 문자열의 비교를 == 연산자를 사용했는데 이는 문자열을 비교할 때 권장되지 않는 방법이라고 하네요.
문자열을 비교할 때는 .equals() 메소드를 사용하여 비교하는 것이 객체와 상관없이 문자열 자체를 비교할 수 있다고 합니다.
자바 공부할 때 배웠던 내용인데 까먹고 있었네요.
다른 사람의 답
import java.util.Arrays; public class FindKim { public String findKim(String[] seoul){ //x에 김서방의 위치를 저장하세요. int x = Arrays.asList(seoul).indexOf("Kim"); return "김서방은 "+ x + "에 있다"; } // 실행을 위한 테스트코드입니다. public static void main(String[] args) { FindKim kim = new FindKim(); String[] names = {"Queen", "Tod","Kim"}; System.out.println(kim.findKim(names)); } }
이 분의 답은 한 줄의 코드로 작성되어 있는 것이 신기하여 가져왔습니다. .asList()매소드는 배열을 리스트로 처리할 수 있게 해줍니다.
.index()매소드는 ()안에 들어가 있는 값의 index(여기서는 순번이라고 합시다.)를 반환해줍니다.
이 매소드를 리스트 뿐만 아니라 문자열 자료형에도 사용이 가능하다고 하네요.
seoul배열을 리스트로 바꿔서 indexOf로 답을 구한 알고리즘이었네요.