Skip to content

hangpy/boost_algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

알고리즘 카테고리

문제를 풀면서 반복적으로 실수할 가능성이 높은 부분은 반드시 정리하고 실수를 반복해선 안된다.




🔩 컴파일 환경

Using IDE MS Visual Studio

Windows SDK version: 10.0.17763.0




😆 실수 모음

BFS 중복 카운트 실수

인접리스트 방향성 고려

고정된 크기의 입력값을 받을 때

시간, 메모리 제약사항 부터 확인

정답의 크기를 고려한 자료형 선언

종료 시점을 로직에 포함 여부 고려

필요 없는 계산은 피하기

비교연산자 대상체 실수하지 말 것

입출력 제약사항 반드시 확인할 것

비어있는 queue 또는 stack에서 계속 front(), pop() 시도

DFS로 특정 깊이까지 퍼짐 표현하기

대입과 축적을 헷갈리지 말자. 축적의 경우 반드시 초기화할 것!

정렬시, 유효한 시작 인덱스를 반드시 확인할 것!

중복되는 연산을 확인하고 미리 계산할 수 있는지 생각해보자!

제공되는 기회 수(카운트 조건)를 놓치지 말자!

좌표평면 상에서의 거리 관련 문제에선 일단 유클리디안 거리를 떠올리자!

queue도 사이즈 활용이 가능하다!

동시성 우선순위 문제는 말그대로 우선순위대로 연산하는 방법을 찾자

재귀호출에서 다음 상태를 매개변수로 넘길 때, 현재 상태를 함부로 갱신하지 말자

범위기반 for문을 사용할 때 원본 변경 여부(&)를 반드시 확인하자!

시간의 흐름 제약을 꼼꼼히 확인하자!

분기의 완전성(if, else if, else)을 귀찮더라도 지키자!

입력을 받을 때 그대로 대입할 지, 후처리를 해야하는지 꼭 확인하자!

문자열을 입력받을 때 반드시 null값을 고려하자!

중간 입시결과값에 대한 자료형을 주의하자!

C++에서 endl 쓰지말자

하나의 그룹으로 묶여있는지는 dfs 한번으로 판별 가능함을 생각하자!




😎 C++ 기법 모음

시간을 줄이기 위한 scanf 표준 입출력 사용 (예정) (scanf, cin 상황별 사용 요령)

std::ios_base::sync_with_stdio(false); cin.tie(NULL)로 표준입력속도 끌어올리기 (예정)

무한대 표현하기

소수점 밑 반올림 (예정)

데이터 저장시 인덱스로 구별이 가능하다면 모두 배열로 구현하자 (예정)

우선순위 큐 (priority_queue) 활용 방법 및 중복 방지

순열조합, 중복순열 표현하기

묶고 싶은 것은 구조체(struct)를 사용하자 (예정)

배열로 방향과 같은 변화 표현하기

컨테이너속 노드에 구조체를 통해 상태 추가하기 (예정)

STL 정렬함수 활용하기

문자열 처리 관련 STL 활용밥 숙지 (예정)

vector(배열)에서 중복 원소 제거하기

for문 안에서 증감부 조작으로 로직 간소화하기 (예정)

0110101 입력에서 한자리씩 받고 싶을 경우, 그냥 문자열로 받도록 하자 (예정)




😓 Visual Studio 활용

반례 체계적으로 찾기 (예정)

F5 key로 바로 다음 중단점으로 이동하기 (예정)

ctrl + shift + space로 매개변수 확인

도구 - 설정 - 키보드 - 주석 단축키 변경 (Ctrl + /, Ctrl + Shift + /)

자동 인덴트 조정 (들여쓰기 조정) (파일 전체: Ctrl + K + D, 선택: Ctrl + K + F) (or Alt + F8)

함수 정의로 이동: F12

직전 커서 위치로 이동: Ctrl + - (다음커서: Ctrl + Shift + -)

동시에 여러줄 직사각형 형태로 입력: Alt + 커서로 직사각형 모양으로 드래그

전체 변수명 바꾸기: 현재 변수 위치에서 Ctrl + R 두번

Ctrl + / 안먹힐 때: 시스템 키보드 입력이 Microsoft가 아닐경우: Window + Space로 되돌리기

Window + Shift + S : 부분스크린샷




😖 에러별 대처 요령 모음

Expression: deque iterator not dereferencable (예정)




🗽알고리즘 구현 연습

Union-Find (Disjoing Set) (서로소 집합)

Binary Search (이진 검색)




🗻자료구조 구현 연습

Binary Tree (이진 트리)




🗿 알고리즘에 대한 직관적, 의미론적인 접근

재귀함수(Recursive Function)에 대한 프로그래밍적 고찰




🍅 DFS, BFS (완전탐색)

BEAK 2606. 바이러스

BEAK 2667. 단지번호붙이기

BAEK 10216. Count Circle Groups

BAEK 1890. 점프 (풀 수는 있지만 DFS, BFS로 풀 경우 각각 시간, 메모리 제한 초과)

BAEK 1325. 효율적인 해킹

BAEK 3055. 탈출

SWEA 1949. 등산로 조정

SWEA 2117. 홈 방범 서비스 (논리적으로 BFS이지만 유클리디안 거리를 통해 더 빠르게 계산 가능) 🌟

BAEK 1039. 교환 (+백트래킹)

SWEA 2105. 디저트 카페 (+백트레킹, 중복계산 찾아내기, 분할 병합 판별)

SWEA 1953. 탈주범 검거 (DFS, BFS 확실하게 구별해서 풀기)

SWEA 1952. 수영장 (재귀호출을 이용한 DFS)

SWEA 4008. 숫자 만들기 (오히려 순열로 푸는게 빨랐던 문제)

SWEA 2112. 보호 필름 (중첩된 순열 조합)

BAEK 14500. 테트로미노 (DFS + 예외케이스 분기 후 최대값 갱신)

BAEK 14501. 퇴사 (DFS, DP)

BAEK 14502. 연구소 (순열 조합과 BFS)

BAEK 13460. 구슬 탈출2 (상태를 노드로써 BFS 처리) 🌟🌟🌟

BAEK 12100. 2048(Easy)

BAEK 15686. 치킨배달 (순열 조합, 맨 처음에 시간초과)

BAEK 17406. 배열돌리기4

BAEK 17135. 캐슬 디펜스 (문제 함정 및 중복 타겟 가능성) 🌟🌟🌟

BAEK 17070. 파이프 옮기기 (DP)

BAEK 16637. 괄호 추가하기 (+ Stack 쓰는 방법)

BAEK 3085. 사탕 게임 (빠른 접근)

BAEK 17471. 게리맨더링 🌟🌟🌟 (묶음 체크)




🍃 재귀호출 심화

BAEK 1019. 책 페이지

BAEK 1914. 하노이 탑




🍉 DP

BAEK 1890. 점프

BAEK 9095. 1, 2, 3 더하기

algospot. WILDCARD

BAEK 1915. 가장 큰 정사각형




🍈 Simulation & 구현

BAEK 3190. 뱀

SWEA 5650. 핀볼 게임

SWEA 5644. 무선 충전

SWEA 5648. 원자소멸 시뮬레이션

SWEA 2382. 미생물 격리

SWEA 4012. 요리사 (순열 조합)

SWEA 2115. 벌꿀채취

SWEA 2477. 차량 정비소

SWEA 5653. 줄기세포 배양 (동시성 우선순위 문제 해결이 관건)

SWEA 4014. 활주로 건설

SWEA 4013. 특이한 자석 (상태 저장 후 한꺼번에 변화)

SWEA 2383. 점심 식사시간 (2^n 순열조합 next_permutation()으로 결정하기)

BAEK 14499. 주사위 굴리기

BAEK 16236. 아기상어 (실수 와장창) 🌟

BAEK 15685. 드래곤 커브 (규칙 찾아내기) 🌟

BAEK 15683. 감시 카메라 (순열 조합)

BAEK 14503. 로봇 청소기

BAEK 14889. 스타트 링크 (SWEA 4012와 똑같은 유형)

BAEK 16234. 인구이동

BAEK 5373. 큐빙 🌟🌟

BAEK 16235. 나무 재테크

BAEK 2468. 안전 영역

BAEK 17144. 안녕! 미세먼지

BAEK 17281. ⚾




🍌 Greedy

BAEK 2217. 로프

BAEK 4716. 풍선

BAEK 13458. 시험감독




🍍 위상정렬

BAEK 1516. 게임개발




🍇 최단경로 문제 (SSP, ASP)

BAEK 1504. 특정한 최단 경로 (다익스트라)

BAEK 11657. 타임머신 (벨만 포드)




🍋최소 스패닝 트리 (MST) + Union-Find

BAEK 1197. 최소 스패닝 트리 (Kruskal 이용) (MST)

BAEK 4195. 친구 네트워크 (endl) 🌟🌟🌟

BAEK 3780. 네트워크 연결 (압축 기법) 🌟🌟

BAEK 10775. 공항

BAEK 9938. 방 청소 (그래프적 사고) 🌟🌟🌟




🍒 문자열 처리

BAEK 3613. Java vs C++

BAEK 9935. 문자열 폭발

BAEK 5052. 전화번호 목록 (Trie) 🌟




🍍 분할 정복 (이분탐색 등등)

BAEK 1920. 수찾기 (STL <algorithm> binary_search() 활용법)

BAEK 2805. 나무자르기 (이분탐색 착안점 중요) 🌟🌟

BAEK 1654. 랜선자르기 (종료조건, 자료형 실수) 🌟🌟🌟

BAEK 2512. 예산

BAEK 2104. 부분배열 고르기 (엄청 중요) 🌟🌟🌟

BAEK 10816. 숫자카드 (최적화)




About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published