일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c++
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 카카오
- 투포인터
- Smilegate
- LIS #Algorithm #요소추적
- Algorithm
- 코딩테스트
- BFS
- 1편
- 백준
- 카카오인턴
- 스마일게이트
- 중반부
- BaekJoon
- 식단
- 삼성 #코테 #2020상반기 #c++
- 알고리즘
- 유니온파인드
- 서버개발캠프
- Union-find
- 보석쇼핑
- 소감
- 코테
- Today
- Total
목록전체 글 (222)
짱아의 개발 기록장
1~size만큼 반복하면서, for(int i=0; i1){ ans += to_string(cnt); } ans += last; ans += s.substr(i, s.size()-i); } } return ans; } int solution(string s) { int answer = INT_MAX; for(int i=1; i
프로그래머스 - 없어진 기록 [문제] [풀이 과정] SELECT * FROM ANIMAL_INS A right outer join ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID 위 SQL을 돌리면 아래와 같은 결과값이 나오게 된다. 즉, A, B 테이블의 칼럼값이 다 나오되, B테이블을 기준으로 결과값이 도출되어서 B테이블에는 있지만 A테이블에는 없는 tuple들의 A칼럼 값들은(A.ANIMAL_ID, A.ANIMAL_TYPE, A.DATETIME, A.INTAKE_CONDITION...) null값으로 출력된다. [정답] select B.ANIMAL_ID, B.NAME from ANIMAL_INS A right outer join ANIMAL_OUTS B on A.ANIM..
연산자의 종류를 exp벡터에 넣어주고, 연사자의 위치를 차례대로 location벡터에 넣어준다. 이후, next_permutation으로 exp벡터에 있는 연산자들의 우선순위의 경우 수를 구한다. do while문 안에서는 임시 벡터를 만들어서 우선순위에 해당되는 연산들은 먼저 계산을 해주고 없애고 하는 식으로 계산을 해준다. 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include #include #include #includ..
기본적인 dfs문제라고 생각된다. numbers.size()만큼 dfs를 돌면서 계산을 해주고 최종 결과가 target값과 동일하면 answer++해주면 된다. 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 #include #include using namespace std; int answer = 0; void dfs(int num, int idx, int target, vector numbers) { if(idx==numbers.size()){ if(num==target){ answer++; } return; } dfs(num+numbers[idx], idx+1, target, numbers); dfs(num-numbers[idx..
전형적인 Tree문제이다. InorderTraversal(중위순회)을 통해서 col값을 ++해주고 dfs를 통해서 인자값으로 넘긴 level을 기준으로 height[level]값에 해당 col값을 차례대로 넣어주었다. 이후에는 1~maxHeight값을 탐색하며 level별로 너비를 구해주며, 최대 너비를 구했다. 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 50 51 52 53 54 55 56 57 58 59 60 61 // 트리의 높이와 너비 #include #include #include using n..
Greedy?라고 하기에는 적당한 구현문제라고 생각된다. 키포인트는! lost한 학생이 reverse에도 속해있을 수 있기 때문에 그 부분을 잘 처리해주면 문제없다. 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 50 #include #include #include using namespace std; bool check[31]; bool check2[31]; int solution(int n, vector lost, vector reserve) { int answer = n; for(int i=0; i
문자열 처리 그 자체인 문제..!! 일단, 이렇게 시분초밀리초로 나누어져 있는 문제는 무조건! 밀리초 기준으로 변환해주고 작업하는 것이 편하다는 것을 알고있어야 한다. 그래서 문자열 파싱을 한 후에 밀리초 단위로 모두 변환해서 요청 시작 시간과 끝시간을 구해주었다. 중요한 점은! 초당 최대 처리량은 요청의 응답 완료 여부에 관계없이 임의 시간부터 1초(=1,000밀리초)간 처리하는 요청의 최대 개수를 의미한다. 라고 문제에 나와있기 때문에 시작 시간과 끝시간 안에서만 요청이 유효한 것이 아니라 시작시간-999 ~ 끝시간 까지가 유효한 범위라는 것을 캐치하는 것이 중요하다. 왜냐하면, 말 그대로 1000밀리초 간에 처리하는 요청의 최대 개수를 구하는 것이기 때문에 어느 부분이던간에 1000밀리초의 범위에 ..
그냥 완탐으로 하기에는,,, 시간제약도 있을 것 같고 애초에 Greedy를 연습하려고 선택한 문제이기에 Greedy로 풀기 위해 노력했다. 하지만,,,아이디어가 도저히 떠오르지 않아 아이디어만 다른 블로그를 참고했다. 핵심 아이디어 #1924를 예로 들어보겠습니다. 1. k값이 2이므로 4-2 = 2글자가 출력됩니다. 2. 그렇다면 앞에서 (0, 1, 2)2까지 검사를해서 큰 수를 찾으면 됩니다. 1924에서 앞에서 2까지인 부분은 192 입니다. 이중에서 가장 큰 숫자는 9가 됩니다. 3. 9를 사용했으므로 검사는 9의 뒤부터 탐색하게됩니다. 한 번 뽑았으므로 뒤에 검사하는 부분을 하나 증가시킵니다. 24가 남게되고 이중에서 가장 큰 숫자는 4입니다. 4. 따라서 정답은 94가 됩니다. 이런식으로 범위..