코딩테스트/알고리즘

자료구조 유형 오답노트

초코chip 2024. 8. 21. 15:36

정리

 

 

자료구조 주의사항!!

  • 우선순위큐는 삽입, 삭제 시에만 재정렬이 되는거지, 내부의 값을 수정했을때는 정렬이 적용되지 않음
    • 이럴땐 건실하게 그냥 리스트 쓰고, 변경했을때 정렬 알고리즘 써라
  • 큐, 스택, 우선순위큐 자료구조들은 get을 통한 접근이 불가능하다!
    • 이러고 싶으면 링크리스트 써라! 링크리스트는 offer(), poll() 연산 다 지원함
  • remove() 연산을 사용하면 삭제되는 값을 반환해줌

 

n만큼 이동을 해야하는데, 계속 변동성이 생기는 경우

// diff 만큼 이동해야하는데 중간에 빠지는값 떄문에 diff - 빠지는값 만큼 이동해야하는 경우
// adjusts란 배열에 빠진 값들을 저장해서 빠진 값들 중에 중간 값이 몇개 있는지 체크 -> 그 값을 적용

int diff = t - dq.peekFirst();
int adj = checkDiffBetween(t, dq.peekFirst());
diff = (diff > 0) ? diff - adj:  diff + adj;


static ArrayList<Integer> adjusts = new ArrayList<>();

public static int checkDiffBetween(int s, int e){
    if(s > e){
        int temp = s;
        s = e;
        e = temp;
    }
    int count = 0;

    for(int v : adjusts){
        if(v > s && v < e){
            count++;
        }
    }

    return count;

}