중국어는 지원이 되다니... 소국의 비애...!
import java.util.Arrays;
import java.util.*;
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
int answer = checkNumber(A);
return answer;
}
public int checkNumber(int [] A){
int answer = 0;
int [] arr = Arrays.stream(A).distinct().toArray();
int [] ans = new int[arr.length];
for(int i : ans){
i = 0; //0으로 초기화
}
for(int i = 0; i < A.length; i++){
for(int j = 0; j <arr.length; j++){
if(A[i] == arr[j]){
ans[j]++;
}
}
}
for(int i = 0; i < ans.length; i++){
if(ans[i] %2 != 0){
answer = arr[i];
}
}
return answer;
}
}
이렇게 짜면 정확성 테스트를 못 넘긴다.
이렇게
0) 배열이 비었으면 0 리턴해주고 끝, 아니면 실행
1) 중복 문자열 제거함
2) 해시맵에다가 발라낸 문자열 넣음
3) 해당된 값이 포함이면 value에다가 +1해줌
4) %2 해서 0 아닌거는 짝 없으니까 그게 짝 없는 문자열임
* 요상한 점은 programmers에서는 stream 쓰면 시간 복잡도 통과 잘 안 되던데...
어쨌든 중복 for문을 지양하도록 하자...
댓글
댓글 쓰기