Skip to content

wlsvy/TIL

Repository files navigation

TIL

Today I Learned

C++

C# & .NET

Git

Computer Science

Graphics

Network And Database

ETC

Coding Problem Solving

List
문제 분류 설명 해답 코드
소수 만들기, 소수 찾기 소수 앞으로 소수 관련 문제 풀때 참조합시다. MakePrime, FindPrime
KnightL on a Chessboard BFS, 중급 체스판 한쪽 끝에서 반대편 끝까지 체스말(나이트Knight)를 최소 몇 번 안에 이동시킬 수 있는지 찾기 KnightL on a Chessboard
Friend Circle Queries UnionFind, 중급 여러 사람들 중 악수한 사람끼리 이어진 그룹의 크기 구하기 Friend Circle Queries
Connected Cells in a Grid DFS, 그래프, 중급 조건을 만족하는 인접한 셀(cell) 연결된 총 갯수 구하기 Connected Cells in a Grid
Cut the Tree DFS, 그래프, 중급 노드로 이루어진 트리의 특정 선분을 잘랐을 때 분할된 트리 노드의 가중치 합 구하기, DFS 응용. 재귀 함수 호출 할때 깊이 들어가면서 가중치 합을 연산하는 것이 아닌, 함수 호출이 끝나고 빠져나오면서 연산하는 것이 포인트 Cut the Tree
Count Luck DFS, 미로 미로의 목적지에 도달할 때 까지 마주친 갈림길의 수 구하기 Count Luck
Synchronous Shopping BFS, 다익스트라 BFS 고난도 문제, 두 마리의 고양이가 상점가를 돌면서 종류별로 생선을 구한다. 두 마리 고양이가 목적지에서 만날 때까지 두 마리 고양이의 이동거리 중 최대값 구하기 Synchronous Shopping
Minimum Loss 정렬 배열의 원소 중, A - B 가 음수이면서 그 절대값 차이가 제일 작을 때의 값 찾기 Minimum Loss
Matrix Layer Rotation 이중 배열, 테두리 회정 이중 배열의 원소들을 반시계 방향으로 회전 Matrix Layer Rotation + 이중 배열을 회전시키는 방법들
Snakes and Ladders BFS 뱀과 사다리 게임, 시작 지점에서 도착 지점에 도달하기 까지 주사위를 최소 몇 번 던져야 하는지 구하기, 주사위 면에 따른 BFS 분기를 활용하는 것이 포인트 Snakes and Ladders
Red Knight's Shortest Path BFS 응용
경로 기록
중복 경로 처리
체스
체스말 옮기기, 시작 지점에서 도착 지점 까지 도달하기 위한 최소 이동 횟수 및 목적지까지 이동한 방향 출력, 그리고 중복되는 경로가 존재하면 규칙에 따라 우선순위에 높은 경로를 선택. Red Knight's Shortest Path
Short Palindrome DP
문자열
(난이도 어려움) 특정 문자열에서 조건을 만족하는 경우의 수 찾기.
(0 <= a < b < c < d < 문자열 길이, str[a] == str[d] && str[b] == str[c])
Short Palindrome
Prim's (MST) : Special Subtree Prim
그래프
최소 신장 트리를 구하는 prim 알고리즘 작성 Prim_MST
Kruskal (MST): Really Special Subtree Kruskal,
UnionFind,
그래프
최소 신장 트리를 구하는 kruskal 알고리즘 작성 Kruskal_MST
Dijkstra: Shortest Reach 2 다익스트라,
최소길이,
그래프
시작 노드를 기준으로 다른 노드까지 최소 거리를 구하는 다익스트라 알고리즘 작성 Dijkstra
문자열 압축 문자열
카카오
문자열 압축 알고리즘 작성, 예외처리가 까다로운 문제
압축 숫자 자릿 수(0, 10 차이), 초기 위치 관련, 압축되지 않는 나머지 문자열 예외처리
StringCompression
후보키 카카오, 비트연산 관계형 데이터 테이블에서 후보키 찾기 CandidateKey
무지의 먹방 라이브 카카오 EatingShow
괄호 변환 문자열,
괄호처리,
카카오
괄호 처리 알고리즘 작성 + 괄호 유효성 검사 ChangeParenthesis
자물쇠와 열쇠 이중배열 회전,
카카오
key 와 lock 이중배열에 대해서, key를 이동시키거나 회전시켜서 lock 에 딱 맞출 수 있는지 구하기 Lock
가사 검색 트라이(Trie),
문자열 검색,
카카오
쿼리(ex : st????)에 대해서 조건을 만족하는 문자열 갯수 찾기
- 쿼리와 동일한 길이
- 쿼리의 ?를 제외한 문자는 전부 동일
StringSearch
Goodland Electricity 그리디,
배열 응용
특정 도시들의 정보가 배열로 주어졌을 때, 발전기를 설치하는 최소 횟수 구하기. 시간 효율성을 위해서 배열을 독특한 방식으로 사용해야 하는 것이 특징 Goodland Electricity
Candies 그리디,
스택
배열내 인접한 원소의 값(학생 학년) 차이에 따라 사탕을 나눠주기. 최소로 필요한 사탕 갯수 구하기 Candies
멀쩡한 사각형 최소공배수 격자로 나뉘어진 직사각형에서 대각선을 그었을 때, 대각선이 지나가는 격자 사각형 개수를 구하기 IntactRectangle Lcm, Gcd
Gena Playing Hanoi 하노이,
BFS
4개의 기둥을 활용하는 하노이의 탑, BFS를 활용하여 해결하는 방식이 참신했던 문제 Gena Playing Hanoi
예산 이분탐색 이분탐색을 활용하는 기본적인 문제입니다. BinarySearch_Budget
입국심사 이분탐색 이분탐색을 활용하는 기본적인 문제입니다. Immigration Immigration(cs)
추석 트래픽 카카오, 문자열 어떤 작업의 시작/종료 시간이 주어졌을 때, 특정 1초 구간에서 처리되는 작업의 최대 개수 구하기 ThanksgivingDayTraffic
매칭 점수 카카오, 문자열 웹페이지 html을 분석하고 매칭점수 구하기 MatchingScore
블록 게임 카카오, 테트리스 특정 테트리스 블록이 쌓인 상태에서, 추가적인 1x1 칸 블록을 임의로 삽입할 때 제거할 수 있는 블록의 최대 갯수 구하기 BlockGame
기둥과 보 짓기 카카오 격자 칸에 대해서, 가로/세로선을 차지하는 물체를 다루는 문제 ConstructPillarAndBeam
외벽 점검 카카오, DFS DFS 응용 문제 WallChecking
블록 이동하기 카카오, BFS, 미로 BFS 응용 문제, 좌표 두 칸을 차지하는 로봇을 회전시켜가며, 목적지 까지 이동시킬 때 최소 이동 횟수를 구하자 MoveBlock
호텔 방 배정 카카오, UnionFind 연속된 순서의 숫자중 가장 마지막 값을 빠르게 찾는 법을 구현하는 것이 포인트 HotelReservation
징검다리 건너기 카카오, 이분탐색 특정 횟수 만큼 밟으면 중간의 돌이 사라지는 징검다리 문제. SteppingStone
튜플 카카오, 문자열 문제 풀이 로직보다 문자열 분석이 더 귀찮은 문제 Tuple
불량사용자 카카오, DFS DFS 응용 문제, 제재 대상 아이디와 유저 아이디를 매칭 시키는 방법이 이전까지 풀어왔던 DFS 방식과는 다르다. IllegalUser
수식 최대화 카카오, 문자열, 사칙연산 연산자 우선순위에 따라 수식 표현식 결과의 최댓값을 구하는 문제. MaximizeExpression
보석 쇼핑 카카오, 배열 조건을 만족하는 배열의 연속된 범위를 구하는 문제. GemShopping
동굴 탐험 카카오, DFS/BFS DFS/BFS 응용 문제, 특정 노드는 바로 접근할 수 없으며, 다른 임의의 노드에 방문한 뒤부터 잡근이 가능. 특정 노드를 방문하기 위해 선행되는 조건을 만족하는지 확인하는 과정에 주의하자. CaveAdventure
지형 이동 BFS, 크루스컬 BFS 응용 문제, 지형에 해당하는 칸마다 높이 값이 존재하며, 두 지역의 높이 차이가 특정 값보다 크다면 올라갈 때 사다리를 사용해야 한다. 최종적으로 필요한 사다리의 길이를 구하는 문제. 개인적으로 시간초과(set 데이터 비교 관련)으로 고생한 문제 크루스컬을 활용하는 방법도 존재 ExploreTerrain
Max Array Sum DP 한칸 간격을 두고 인접한 배열 원소의 합을 구하기. 다수의 경우 중에서 최대값을 출력 Max Array Sum
스티커 모으기(2) DP 일차원 DP 응용 문제 CollectingSticker
땅따먹기 DP 이차원 DP Hopscotch
가장 큰 정사각형 찾기 DP 이차원 DP, 0과 1로 이루어진 2차원 배열에서 1이 차지하는 칸에 대해 가장 큰 정사각형 찾기 FindBiggestSquare
Lego Blocks DP, 블록쌓기 특정 칸을 완전히 채울 수 있게 레고블록을 사용하는 경우의 수 구하기. 접근법에 대한 배경지식이 없으면 코드 이해가 어려우니, 해설 페이지를 반드시 참조할 것. LegoBlocks
도둑질 DP 일차원 DP 응용문제, 스티커 모으기(2) 와 비슷한 유형 Theft
3 x N 타일링 DP, 블록쌓기 일차원 DP 응용문제, 접근법은 여기서 확인 3xN_tiling
Xor and Sum 비트 연산 두 개의 2진수 값에 대해서, 한쪽 값을 1비트 씩 쉬프트 시킬 때 마다, 두 값의 xor 결과의 합을 구하기. (어려움) xor-and-sum
지형 편집 이분 탐색 블록을 쌓아 만든(마인크래프트 처럼) 지형에서 서로 다른 높낮이를 균일하게 만들 때 블록을 새로 만들거나 삭제할 때 들어가는 총 비용 구하기. 이분 탐색을 활용하지 않은 보다 간단한 해법이 존재한다. EditTerrain

좀더 효율적인 문제풀이를 위해서

  • 예외처리가 복잡해보인다 싶으면 일단 DFS/BFS를 먼저 생각하자

  • 데이터 갯수가 많아 DFS/BFS 적용이 어렵다면 DP를 생각하자.

  • map/unordered_map/set 등을 써야할 필요성을 느낀다면 그 전에 먼저 배열을 적용할 수 있는지 생각하자

  • STL 컨테이너를 활용하는 경우, 더 빠른 코드 작성과, 가독성을 위해서 반복자(iterator) 사용은 자제하자.

Helper Resources

참고

About

Today I Learned

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published