문제 참 재밌다ㅋㅋ 근데 너무쉽네 근데 IDE에서는 되는데 왜 테스트가 실패하지? 했다.
IDE에서 처음 푼 방법은
public static String solution(String[] seoul) {
int i = 0;
int answer = 0;
for(String kim : seoul){
if(kim == "Kim"){
answer = i;
}
i++;
}
return "김서방은 " + answer + "에 있다";
}
이랬는데 잘 되길래 될줄알았다.
answer은 int형이라그런가? 싶어서 Integer.toString(answer) 해서 String형으로 바꿨는데도 자꾸 answer가 0으로 들어갔다.
그래서 뭐가 문제지하면서 수정해보면서 발견했다.
바로
if문에서 == 으로 해서 안됬던거였다.
public String solution(String[] seoul) {
int answer = 0;
for(int i = 0; i < seoul.length; i++){
if(seoul[i].equals("Kim")){
answer = i;
}
}
return "김서방은 " + answer + "에 있다";
}
.equals() 를 썼더니 바로 됐다.
왜 여기서만 안되는거지? 그래서 찾아봤다.
"==" 는 두 객체의 주소를 비교하는것이었다.
".equals" 는 두 객체의 내용을 비교하는거다.
둘의 차이를 보자.
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // false (다른 객체)
System.out.println(str1.equals(str2)); // true (내용이 같음)
같은 "Hello"지만,==했을땐 false. 다른객체이기 때문이다. 즉, 주소가 다르다.
.equals는 내용이 같으므로 바로 true.
이 차이를 이제 알다니..이제라도 알았으니 다행이다.
'Java > 알고리즘' 카테고리의 다른 글
없는 숫자 더하기 (0) | 2024.01.17 |
---|---|
나누어 떨어지는 숫자 배열(향상된 for문 꿀팁 idx++) (0) | 2024.01.16 |
음양 더하기 (0) | 2024.01.12 |
콜라츠 추측 (0) | 2024.01.09 |
두 정수 사이의 합 (1) | 2024.01.08 |