일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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++
- 카카오인턴
- 1편
- 투포인터
- 알고리즘
- 유니온파인드
- Union-find
- LIS #Algorithm #요소추적
- BaekJoon
- 코테
- c++
- 스마일게이트
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 중반부
- 식단
- 백준
- 보석쇼핑
- 서버개발캠프
- Algorithm
- 카카오
- BFS
- 소감
- Smilegate
- 코딩테스트
- Today
- Total
목록Category (222)
짱아의 개발 기록장
전체 치킨집을 vector에 넣고 "조합"을 사용하여 m만큼의 치킨집을 선택하여 도시의 치킨거리를 구하는 방식으로 구현했다. 자세한 부분은 코드를 보면 알 수 있다. 코드 첨부 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 64 65 66 67 68 69 70 71 // 치킨 배달 #include #include #include using namespace std; int n, m; int city[51][51] = {0, }; ve..
행과 열을 기준으로 각각 구현하면 된다. 행을 기준으로 설명을 해보겠다. 1) 열마다 탐색하며 높이의 차이가 1만큼 나는 곳에 L길이의 경사로를 설치할 수 있는지 확인한다. 2) 경사로를 설치할 수 없으면 총 길의 개수에서 1만큼 빼준다. *포인트는!! 양 방향으로 탐색해야한다는 것이다* 즉, 한 쪽 방향으로 탐색하고 반대쪽으로도 탐색해야 경사로를 설치할 수 있는 지 없는지 정확하게 파악할 수 있다. _____|------ 이런 모양도 있는 반면, ----|______이렇게 내려가는 부분도 존재하기 때문이다. 코드 첨부 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..
n의 크기가 크지 않아서 n^2으로 푸신 분들도 계시겠지만 글쓴이는 nlogn LIS 알고리즘을 사용하여 풀었습니다. 특히, 이 문제는 요소들을 구해야 하기 때문에 LIS 요소 역추적하는 부분도 구현했습니다. 블로그에 LIS 요소 역추적하는 방법에 대해서도 포스팅 했으니 참고바랍니다. jungahshin.tistory.com/7 [Algorithm] LIS 요소 역추적하기(backtracing) 실제 LIS 알고리즘을 통해 생성된 백터는 실제 LIS를 나타내지 않습니다. 그렇기 때문에 LIS를 이루는 원소들을 알아내기 위해서는 추가 과정이 필요합니다. 아래 문제가 LIS 요소 역추적을 연습하� jungahshin.tistory.com 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..
여러가지 풀이 방법이 있겠지만, 글쓴이는 조합을 활용해서 문제를 풀었다. 벡터에 사용되는 연산자의 개수만큼 해당 연산자의 idx값을 넣어주었다. ex) 1 1 0 1 -> [0, 1, 3] / 2 0 0 2 -> [0, 0, 3, 3] 그리고 조합(next_permuation사용)을 통해 계산을 하고 최소, 최대값을 갱신해주었다. 코드 첨부 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 // 연산자 끼워넣기 #include #include #incl..
문제에서 구현하라는 순서대로 쭉 구현하면 되는 간단한 구현문제였다. 구현을 하다가 조건에 맞는 부분, 맞지 않는 부분이 나오면 끊고 다시 돌아가는 부분만 잘 확인하면 된다. 코드 첨부 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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 // 로봇 청소기 #include ..
내가 생각한 구현 순서는 다음과 같다. 1) 빨간 공과 파란공을 한 방향으로 빈칸이나 탈출구를 만나면 쭉 밀어준다. 2) 그 후, 상태를 비교해본다. 3) 만약, 파란공이 탈출구로 빠진다면 바로 다른 방향으로 넘어간다. 4) 파란공과 빨간공이 같은 자리에 도착한다면? 빨간공이 움직인 거리와 파란공이 움직인 거리를 비교한 후 더 멀리 움직인 공이 더 안쪽?에 위치한다. 5) 빨간공이 탈출구를 만난다면 game over! 이렇게 순서대로 코드로 잘 구현해낸다면 성공이다^.^ 코드 첨부 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 ..
역대급 구현문제이다.....ㅎㅎ... 생각보다 구현하는 데에 오래거렸다...(물론 중간에 어이없이 빼먹은 부분 때문에 더더) *중요한 포인트* 1. 행이나 열이 타일로 가득찬 경우, 지우고 내리고 지우고 내리는 것이 아니라 한 꺼번에 지우고 내리면 된다. 2. 블록은 떨어질 때 블록 단위로! 떨어진다. (마구잡이로 떨어지는 것이 아니라) 2번 포인트를 위해서 글쓴이는 green, blue 2차원 배열에 블록을 저장할 때에 블록의 번호를 저장했다. 그리고 인접한 곳에 같은 번호를 가진 칸이 있다면 하나의 블록으로 간주했다. 위에 2가지 포인트만 잡고 코드를 설계하고 구현하면 될 것 같다. 구현은 끈기를 가지고 푼다면 풀 수 있는 문제이다. 코드 첨부(매우 김 주의) 1 2 3 4 5 6 7 8 9 10 1..
정말 말 그대로 문제에서 봄, 여름, 가을, 겨울에 해당하는 조건들을 다 구현해주면 되는 구현문제이다. 다만, 어떠한 자료구조에 나무의 상태, 양분의 상태를 저장할지 코드를 설계하는 초반 작업이 중요하다고 생각된다. 글쓴이는 vector tree[11][11]; 에 나무의 상태를 저장했다. (한 칸에도 여러 그루의 나무가 있을 수 있기 때문) 그리고 2차원 배열 형태로 양분을 저장했다. 코드 첨부 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 ..