일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 보석쇼핑
- 중반부
- 백준
- 스마일게이트
- Smilegate
- 삼성 #코테 #2020상반기 #c++
- c++
- Algorithm
- 카카오인턴
- LIS #Algorithm #요소추적
- BaekJoon
- Union-find
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 코테
- 소감
- 유니온파인드
- 코딩테스트
- 투포인터
- 1편
- 카카오
- BFS
- 알고리즘
- 식단
- 서버개발캠프
- Today
- Total
목록Algorithm/카카오 기출 (17)
짱아의 개발 기록장
어떤 알고리즘으로 문제를 풀지를 고민하는 데 엄청 시간이 오래 걸렸다. 다른 분들의 풀이를 참고한 결과 bfs와 tree를 사용해서 푸는 문제였고 이전에 반드시 방문해야하는 방 => before 이전에 반드시 방문해야하는 방을 방문하지 않아 잠시 보류를 하는 방 => after 을 표시하여 적절하게 구현해주는 문제였다. 문제를 풀어도 30번 테케가 계속 틀려서 찾아보니 0번방은 반드시 이전에 방문해야하는 방이 존재하면 안된다는 조건을 걸어주어야 했다. 0번방이 start지점이기 때문에 before[0]!=0이라면 false를 리턴해주었다. 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 ..
오우...level3정도의 문제는 아닌 것 같다는 느낌이다.. 물론 어려운 알고리즘 기술을 요구하는 문제는 아니지만, 구현도 실력이라고 생각하기 때문에 쉽지 않은 문제라고 생각한다. 아래 블로그의 해설을 참고해서 풀 수 있었다. yjyoon-dev.github.io/kakao/2021/01/29/kakao-paircard/ 다익스트라(최단거리)+백트래킹 알고리즘이 혼합된 문제이다. 1) 백트래킹 => 모든 경우의 수 다 돌기 일단, 어떤 카드를 먼저 뒤집을 지를 결정해야 한다.(1~6번) 같은 카드의 경우에도 첫 번째 카드를 먼저 뒤집냐, 두 번째 카드를 먼저 뒤집냐에 따라 달라질 수 있다. 2) 다익스트라 => 특정 점에서 특정 점까지의 최단 거리 구하기 한 칸씩 이동하면서, 큐에 넣고 특히나, 벽에 ..
*틀림 주의* 9, 31번 테스트케이스가 틀리는 코드입니다... 제발 누군가가 이 테케가 뭔지 알려주시면 감사하겠습니다😥 자료형도 long long으로 바꿔주었지만,,,,계속 틀리네요,,, 일단, 초 단위로 모든 범위를 바꾸어주었고 재생수와, 누적 재생수를 계산해서 adv_time만큼의 구간 중에서 가장 큰 값(check[Emid]-check[mid])을 가지고 있는 구간의 시작점을 구하면 된다. ---------------------------------------------------------------------------------------------------------------------------- 고쳤습니다!!! 문제는 Max값을 0으로 잡았던 것이 발목을 잡았네요..ㅜ Max값을 0..
각각의 원소의 개수가 가장 많은 것이 첫 번째 수, 그다음 많은 것이 두 번째 수..... 이러한 규칙이 생기는 것을 알 수 있었다. ex) "{{1,2,3},{2,1},{1,2,4,3},{2}}" => 2(4번), 1(3번), 3(2번), 4(1번) => (2, 1, 3, 4) 형태의 튜플 완성 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 #include #include #include #include #include using namespace std; map m; vector kind; v..
그냥 간단한 구현 문제였다. 코드를 참고하는 것이 좋겠다. 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 #include #include #include #include #include using namespace std; int solution(int m, int n, vector board) { int answer = 0; int num = n*m; while(num!=0){ num = 0; int check[31][31] = {0, }; for(int i=0; i
문제의 핵심은 기둥과 보를 설치하는 것이 아니라 삭제하는 부분이라고 생각합니다. 설치를 할 때는 설치하는 부분만 확인을 하면 되지만, 삭제는 삭제를 한 후 다른 모든 기둥과 보가 규칙을 만족하는 지를 일일히 확인해주어야 합니다. 물론 삭제하는 기둥이나 보의 근처에 있는 기둥과 보만 검사를 하는 방법도 있겠지만? 너무 많다....ㅎㅎ 그래서 그냥 다 검사해보는 방법으로 코드를 구현했습니다. 그래서 삭제 부분은 1) 기둥이나 보를 일단 삭제한다. 3) 그리고 모든 기존에 있던 모든 기둥과 보를 검사하며 그 자리에 있던 기둥과 보를 삭제하고 다시 넣었을 때 규칙을 성립하는 지 확인해주었다. => 모두 규칙을 성립한다? 그럼 그냥 삭제 / 하나라도 규칙 성립 x? 그럼 그냥 넣는다. 1 2 3 4 5 6 7 8..
설명 추가 예정 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 namespace std; string toLower(string s){ string temp = ""; 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 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 #include #include #include #include using namespace std; int dp[201][201] = {0, }; int solution(int n, int s, int a, int b, vector fares) { int answer = 1e9; // 왜 INT_MAX로 하면 안되는거지??? 에러생김...ㅎㅎ // 두 개를 더하면 int범위를 초과하게 되기 때문에...쓰레기값이 들어간다..!! ..