Today I Learned
- Effective C++
- Effective STL
- Effective Modern C++
- C++ Type Casting
- C++ Value Category
- PrependidColon
- C++ Ios api 정리
- Cmake Study
- Vector_Deque
- C++ 로 작성한 테트리스
- 개념 정리 웹 링크 모음
- Effective C#
- EffectiveC# : 컬렉션을 반환하기보다 이터레이터를 반환하는 것이 낫다. (yield return 이 어떻게 활용되는지)
- More Effective C#
- string in C#
- CLR via C# - 제프리 리처
- .NET Framework, .NET Core 차이점
- GoogleDrive : 1000 C Sharp Dot NET (C#.NET) Interview Questions and Answers... / BookMark
- .NET 유닛 테스트 도구
- C#의 배열은 IList를 구현
- DisposeAsync
- ValueTask
- 윈도우 자주쓰는 명령어
- 리눅스 자주쓰는 명령어
- PowerShell 자주쓰는 명령어
- VI 에디터 자주쓰는 명령어
- 도메인 주도 설계 철저 입문
- GoF의 디자인 패턴
- Refactoring
- 웹 개발자를 위한 대규모 서비스를 지탱하는 기술
- SoftwareEngineeringAtGoogle
- 각종 참조 웹 페이지 모음
- 기술면접 참고 자료
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 |