일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 삼성 #코테 #2020상반기 #c++
- 투포인터
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 중반부
- 스마일게이트
- 보석쇼핑
- 카카오
- BFS
- BaekJoon
- 소감
- 식단
- 서버개발캠프
- 유니온파인드
- 알고리즘
- Union-find
- Smilegate
- 코딩테스트
- LIS #Algorithm #요소추적
- Algorithm
- 백준
- 1편
- 카카오인턴
- 코테
- c++
- Today
- Total
목록Category (222)
짱아의 개발 기록장
기본적인 Tree의 높이를 확인한느 문제였다. Tree는 bfs, dfs로 모두 풀 수 있는데,,, 문제의 분류가 bfs길래 bfs로 풀이해보았다! [메인 로직] node의 right, left부분이 모두 NULL일때가 그 node가 leftNode라는 것을 의미한다. 따라서, 그 때 높이를 측정해주었다. bfs일 경우 너비 우선탐색을 하기 때문에 먼저 발견된 leftNode가 가장 최소의 높이를 가진 노드일 수밖에 없다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 class Solution { public: queue q; int MinLevel = INT_MAX; int minDept..
오우.. 이런 ListNode로 푸는 문제가 c++로는 익숙하지 않아서 힘들었다. 말 그대로 연결리스트의 특성을 잘 살려서 구현하면 된다! [메인 로직] 각 노드의 값을 합하고 나머지는 dummy노드에 넣어주고 몫은 다음으로 넘겨준다. ListNode만 익숙하다면, 계산하는 과정을 그닥 어렵지 않다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { bool check = false; ListNode* dummy = new ListNode(); ListNo..
LeetCode에서 전에 이런 문제를 풀었던 기억이?... Merge Sort을 할때에 두 개로 나눈 배열을 합병하는 과정을 그대로 구현하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { // int idx = 0; ListNode* dummy = new ListNode(); ListNode* curr = dummy; if(l1==NULL || l2==NULL){ if(l1==NULL){..
String을 다루는 문제였다. [메인 로직] map을 사용하여 각각의 문자열을 정렬한 결과와 같은 문자열들을 하나의 vector에 넣어 분류해주었다. aet -> ["eat", "tea", "ate"] ant -> ["tan", "nat"] ... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Solution { public: map m; vector ans; vector groupAnagrams(vector& strs) { ans.resize(strs.size()); int idx = 0; for(int i=0; i
Stack을 사용하여 유효한 여부를 판단하기만 하면 된다. [메인 로직] 닫는 괄호가 나오면, Stack의 top에 같은 종류의 여는 괄호가 나오지 않으면 invalid하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 class Solution { public: stack S; bool check = true; bool isValid(string s) { for(int i=0; i
전형적인 조합 문제!!! 기본적인 조합의 코드를 익히지 좋은 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Solution { public: vector ans; int N; void dfs(int open, int close, string s){ if(open==N){ for(int i=0; i0){ dfs(open, close-1, s+')'); } } vector generateParenthesis(int n) { N = n; dfs(0, 0, ""); return ans; } }; Colored by Color Scripter cs
전형적인 순열을 사용하는 문제이지만, 중요한 점은 중복된 숫자가 있는 것이다! 따라서, 중복되는 결과를 만들어내지 않기 위한 조치가 필요하다. 1. 순열을 만들어내고 마지막에 ans에 있는 벡터들을 탐색하며 같은 배열이 없는 지 확인 시간 매우 많이 소요....(당연한 것,,) faster than 5.08%인가??ㅋㅋㅋ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 class Solution { public: int n; vector v; int visited[10] = {0, }; vector ans; ..
@LogExecutionTime을 만들어주고 LogAspect.java를 만들어서 LogExecutionTime 어노테이션 주변에 어떤 동작들이 일어나는 지를 구현했다. (LogExecutionTime 어노테이션이 붙으면 stopwatch를 통해 시간을 재게 된다.) 이것이 바로 Spring에서 해주는 AOP작업이다. /owners/find 로 들어가게 되면 @LogExecutionTime이 붙었기 때문에 저절로 시간을 잰다. . . . 또한, Spring에서 AOP를 적용하는 방법은 @Around외에도 굉장히 많다. @Before, @After 등등!