문제 설명
String형 배열 seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하는 함수, solution을 완성하세요. seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
제한 사항
- seoul은 길이 1 이상, 1000 이하인 배열입니다.
- seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
- Kim은 반드시 seoul 안에 포함되어 있습니다.
생각
문제의 조건이 잘 주어져서 쉬운 문제가 되었다! 김서방은 오직 한 번만 나타나며 반드시 seoul안에 포함되기 때문이다.
가장 쉬운 방법은 반복문을 사용하여 처음부터 검색을 쭉 하는 것이다. 사실 Kim이 나타나는지 확인을 해야하므로 전체 탐색은 필요하지만 어떤 식으로 탐색하냐가 중요한 것 같다!!
이 문제를 풀 당시(약 한달전..)에는 라이브러리에 대해 잘 몰라서 단순하게 전체 탐색을 하는 방법을 사용했지만 이제는 다른 방법을 알았다! 그 방법을 뒤에서 사용해 보도록 하겠다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Solution {
public String solution(String[] seoul) {
String answer = "";
int index = -1;
for(int i=0; i<seoul.length; i++) {
if(seoul[i].equals("Kim")) {
index = i;
break;
}
}
answer = "김서방은 " + index + "에 있다";
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
코드 그대로 처음부터 seoul배열을 처음부터 끝까지 탐색하여 만약 Kim과 같은 요소가 있다면 그 인덱스로 i를 바꿔주는 방법을 사용했다. 후에 김서방의 위치를 알려주는 answer을 만들어 주면 된다. 간단한 문제지만 Arrays를 이용하면 코드를 더욱 줄일 수 있다! 먼저 키값에 맞는 인덱스를 알려주는 Arrays.indexOf(String str)이라는 메소드가 있다. 하지만 이 메소드를 사용하기 위해서는 배열을 List로 바꿔주어야 하는데 이 또한 간단하게 Arrays.asList()를 사용하도록 하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Solution {
public String solution(String[] seoul) {
String answer = "";
answer = "김서방은 " + index + "에 있다";
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
이 방법을 사용하면 정말 간단하게 줄일 수 있다. 항상 문제를 단순히 푸는 것만이 아닌 더 좋은 방법 (정확성, 효율성)을 생각하는 버릇을 키워야겠다.
'알고리즘 > 코딩 - 프로그래머스' 카테고리의 다른 글
[Java][프로그래머스][Level 1] 수박수박수박수박수박수? (0) | 2019.04.03 |
---|---|
[Java][프로그래머스][Level 1] 소수 찾기 - 3가지 방법 이용 (2) | 2019.04.02 |
[Java][프로그래머스][Level 1] 문자열 다루기 (0) | 2019.03.31 |
[Java][프로그래머스][Level 1] 문자열 내림차순으로 배치하기 (0) | 2019.03.29 |
[Java][프로그래머스][Level 1] 문자열 내 p와 y의 개수 (0) | 2019.03.28 |