Today I Learned

최지웅·2024년 3월 3일
0

Today I Learned

목록 보기
104/238

오늘 할일
1. LeetCode
2. 개강계획_ 6시 15분 기상 후 아침밥 준비해서 먹고 7시 헬스장, 8시 좀 넘어서 택시타고 학교 이동
3. 2차 창엔 준비 _2차 담당학생 채팅방 초대 및 통합 시나리오 확인 완료. (정보없는 1명, 통합버스명단 위치 확인 필요)

오늘 한일
1. LeetCode

    1. Unique Number of Occurences는 정수 배열에서 원소등장 빈도수가 각기 다른 경우인지를 확인하는 문제이다. 최대한 간단하게 해결하기위해 HashTable을 사용했는데, 그 값에 중복이 있는지 없는지를 빈도수 table을 Set으로 변환하여 이전의 사이즈와 같은지를 확인했다. 이때 값의 범위가 음수인 경우 index에 대입하면 오류가 난다는 점을 발견하여 값에 음수값만큼의 보정을 인덱스 접근시 적용하여 해결했다. 논리적인 값의 범위는 -1000<arr[i]<1000이지만 실제 HashTable에 저장되는 물리적인 값의 범위는 0<arr[i]<2000이다.
class Solution {
    public boolean uniqueOccurrences(int[] arr) {
        //-1000<arr[i]<1000이니 범위를 0<arr[i]<2000으로 수정. 인덱스 연산시에만 다른값 사용
        int size=arr.length;
        final int RANGE_FIX=1000;

        int[] table=new int[1000+RANGE_FIX];
        for(int i=0; i<size; i++){
            table[arr[i]+RANGE_FIX]++;
        }

        int total_count=0;
        for(int i=0; i<1000+RANGE_FIX; i++){
            if(table[i]!=0)
                total_count++;
        }

        int distinct_count=0;
        Set set=Arrays.stream(table).boxed().collect(Collectors.toSet());
        distinct_count=set.size()-1;//0제외

        return distinct_count==total_count?true:false;
    }
}

profile
이제 3학년..

0개의 댓글