기록하는 공부
[Programmers] 120903 배열의 유사도 (equals 함수) 본문
728x90
반응형
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/120903
나의 오답
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(int i=0; i<s1.length; i++) {
for(int j=0; j<s2.length; j++) {
if(s1[i] == s2[j]) {
answer += 1;
}
}
}
return answer;
}
}
다른 언어와 달리 자바는 문자열의 비교를 ==로 하지 않는 것을 알게 되었다.
그걸 처음엔 모르고 비교했다가 오답이 발생해 몰랐었는데 자바에는 equals라는 함수가 있음을 배우게 되었다.
자바 equals 함수
자바에서는 문자열을 비교할 때 equals 함수를 사용한다.
대소문자도 구별하여 비교하는 특징이 있으며, 비교하려는 문자열이 Null인 경우에는 NullPointerException이 발생한다.
하지만 인자로 전달되는 문자열이 Null인 경우에는 발생하지 않는다.
String str1 = null;
String str2 = "Hello";
System.out.println(str1.equals(str2));
==> NullPointerException 발생
System.out.println(str2.equals(str1));
==> false
나의 성공 풀이
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(int i=0; i<s1.length; i++) {
for(int j=0; j<s2.length; j++) {
if(s1[i].equals(s2[j]) == true) {
answer += 1;
}
}
}
return answer;
}
}
이중 for문을 사용하여 문자열 배열 s1과 s2를 비교했다.
첫 번째 for문은 s1의 문자열 길이만큼 i를 반복하면서 s1의 i번째 인덱스에 있는 문자열을 두 번째 for문에서 s2의 0번째부터 s2의 문자열 길이만큼 인덱스 j에 해당하는 문자열과 비교하도록 했다.
equals 함수를 사용하여 s1의 i 인덱스와 s2의 j 인덱스 안에 문자열 값을 비교해 그 값이 같다면(true라면) answer에 값을 1씩 더하도록 코드를 짜보았다.
728x90
반응형