String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 solution 구축. 문제 바로가기
나의 전략은 아래와 같았다:
- String형 배열의 seoul element 중 Kim 의 위치를 찾고 "김서방은 x에 있다" 반환
- seoul을 for문을 사용하여 돌린다
- for문 안에 if 문을 사용하여 KIM 과 같다면 해당 index 위치 x에 저장
- "김서방은 x에 있다" 출력
class Solution {
public String solution(String[] seoul) {
int x = 0;
for (int i = 0; i < seoul.length; i++) {
if (seoul[i] == "Kim") {
x = seoul.length;
}
}
String answer = "김서방은 " + x + "에 있다";
return answer;
}
}
정말 놀랍게도 한번에 답을 찾을 수 있었다. 하지만 IntelliJ에서 돌릴땐 답이 나왔지만, 정작 프로그래머스에서는 자꾸 다른 값이 나왔다.
class Solution {
public String solution(String[] seoul) {
int x = 0;
for (int i = 0; i < seoul.length; i++) {
if (seoul[i].equals("Kim")) {
x = i;
break;
}
}
String answer = "김서방은 " + x + "에 있다";
return answer;
}
}
위 코드와 같이 바꾸니 프로그래머스에서도 잘 작동 되었다.
해당 문제를 풀면서 아래와 같이 배울 수 있었다:
- equals() method - 처음에 구축한 코드와 수정한 코드와 가장 큰 차이점은 equals() 부분. 2개의 String에 == operator가 사용이 불가하다는 것을 알았다 (근데 왜 IntelliJ에서 돌아갔을까..?) 그래서 == operator를 대신해주기 위해 equals()를 사용.
- break; - 해당 부분은 굳이 없어도 되지만(확인해봄), 만약 seoul array가 굉장히 길고 KIM이 앞쪽에 있다면, 굳이 끝까지 돌지 않아도 됨.
처음부터 스스로 끝까지 코드를 구축하고 답변을 찾은 줄 알고 좋아했으나, 프로그래머스에서 값이 제대로 안나와서 속상. 다음번엔 프로그래머스에서까지 100점 받아야지.