Skip to content

minhee-123/algorithm

Repository files navigation

💻 자료구조 및 알고리즘 문제풀이 백업

문제풀이 TIP


📖 회전 관련

#include memmove(A, B, 크기)
→ 배열의 크기만큼 B를 A로 복사 (배열 복사할 때 유용한 함수)

2차원 배열 회전 공식
좌상단 (a, b)
우하단 (c, d)
c-a == d-b를 만족해야 함

  • 시계방향 90도: rotated[ i ][ j ] = origin[ a + (d - j) ][ b + (i - a) ]
  • 반시계방향 90도: rotated[ i ][ j ] = origin[ a + (j - b) ][ d - (i - a) ]

📖 MOD 연산
  • (A + B) % C = ((A % C) + (B % C)) % C
  • (A - B) % C = ((A % C) - (B % C) + C) % C
  • (A * B) % C = ((A % C) * (B % C)) % C

계산이 누적되는 경우 중간중간 적용


📖 시간 단축

ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);


📖 문자열의 문자를 숫자로 변환

string number;
int num = number[i] - '0';


📖 우선순위 큐의 정렬기준 (디폴트 최대힙, 내림차순)

struct comp {
bool operator()(int a, int b){ return a > b; }
}; → 우선순위 큐의 정렬기준

priority_queue <int, vector, comp> pq; → 정렬기준을 추가하여 최소힙 선언

우선순위 큐의 정렬기준은 struct의 bool operator 사용
위의 예시는 최소힙, 오름차순
bool operator의 return은 두 값 중 어떤 값이 더 우선순위가 낮은지를 반환해야 함
(true가 우선순위가 낮음, 정렬할 때 뒤로 감)


📖 sort의 비교함수와 우선순위 큐의 비교함수 비교
  • sort: bool 함수 이용 | 어느 값이 더 작아야 하는가 | 디폴트 오름차순
  • priority queue: struct의 bool operator()(input) 이용 | 어느 값이 우선순위가 더 낮은가 | 디폴트 내림차순 (최대힙)

sort는 true가 그대로 적용, priority queue는 true가 뒤로 밀림 (우선순위 낮음, 반대로 적용된다고 생각)


📖 1차원 index를 2차원 값으로 변환 / 2차원 값을 1차원 index로 변환

1차원의 index를 2차원 값으로 변환 (M은 열의 개수(columns))

  • row = index / M
  • col = index % M

2차원 값을 1차원 index로 변환 (M은 열의 개수(columns))

  • index = (row * M) + col

About

자료구조 및 알고리즘 공부

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published