일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카카오 공채
- gcp
- 백준
- 알고리즘
- gradle
- 삼성 SW 역량테스트
- Java
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 부스트코스
- 비트마스크
- 2019 카카오 공채
- 2020 카카오 공채
- 프로그래머스
- 카카오
- 2018 카카오
- set
- 젠킨스
- bfs
- 2018 카카오 공채
- map
- 2018 KAKAO BLIND RECRUITMENT
- Baekjoon
- CS 스터디
- 삼성 SW 기출문제
- 2020 KAKAO BLIND RECRUITMENT
- 자바
- 2018 KAKAO BLIND RECRUITMENT 1차
- 2019 KAKAO BLIND RECRUITMENT
- c++
- dfs
- Today
- Total
목록알고리즘 (11)
아무코딩
문제풀이 이진 탐색을 활용한 문제 개인적으로는 아이디어 구현까지 나름 모의 코테 문제 중에서는 가장 시간을 많이 투자한 문제였습니다. 이진 탐색의 마지막 처리가 헷갈려 시간을 좀 쏟았습니다. 문제 범위 때문에 순차적으로 하나씩 제쳐나가면 시간 초과가 뜨기 때문에 이진 탐색을 활용해야 됩니다. 소스코드 더보기 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 #include #include #include #define STONE_MAX_VAL 20000000..
문제풀이 실제 모의 코테를 칠 때 알고리즘 2 수업시간에 한번 다뤘던 스케쥴링이 생각났다. 스케쥴링 문제는 UnionFind를 활용한 문제였는데 Collapsing Find는 그대로 사용했지만 Weighted Union 말고 바로 다음 방을 골라야 되기 때문에 사용하지 않았다. Collapsing Find에서는 부모를 찾고 부모를 맵핑시켜주는 것이 가장 중요하다. 이를 이용하면 그저 간단하게 문제를 풀 수 있다. 효율성 문제인 거 같아서 쫄았지만 생각보다 앞 문제보다도 간단하게 풀었던 것 같다. 소스코드 더보기 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 4..
문제풀이 범위가 작아 완탐이 가능한 문제입니다. dfs를 사용하였고 문제에 제재 아이디 목록들을 구했을 때 아이디들이 나열된 순서와 관계없이 아이디 목록의 내용이 동일하다면 같은 것으로 처리하여 하나로 세면 됩니다. 라는 부분을 보고 중복방지와 순서가 필요없다는 부분에서 set이 생각나 set을 사용하였습니다. 아이디 목록도 set 그 목록자체의 목록도 set으로 구성하여 이중 set을 사용하였습니다. 소스코드 더보기 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 ..
문제풀이 코딩 테스트에 자주 사용되는 string_tokenize를 사용하는 문제입니다. 그리고 분리한 배열들의 순서를 정하는 아이디어는 길이를 이용하여 소팅하는 방법을 이용하였습니다. 문제자체는 어렵지 않지만 이미 만들어본 string_tokenize를 적용하려다보니 1,2,3문제중에서는 가장 좀 지저분하게 풀었고 시간을 쓴 문제였습니다. 소스코드 더보기 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..
문제풀이 출제의도는 스택 같으나 성질이 비슷한 vector를 이용하였습니다. 소스코드 더보기 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 #include #include using namespace std; vector box; vector basket; int cnt = 0; void moveCrain(int idx) { if (box[idx].size() > 0) { basket.push_back(box[idx][box[idx].size() - 1]); box[idx].pop_back(); } else return; ..
보자마자 자료구조 때 배운 스택을 이용한 계산기 만드는 과제가 생각났다. 그 방식을 적용하여 풀었다. 자료구조에 나오는 스택 계산기는 infix -> postfix postfix 를 통한 결과 로 이루어지는 과정이다. 풀이과정 dfs를 통해 괄호를 친다. 괄호가 중복될수 없기 때문에 괄호보다는 괄호 처리된 연산을 따로 우선순위만 높여주는 방식으로 마킹하였다. 괄호 처리 : 우선순위 1 * : 우선순위 2 +,- : 우선순위 3 dfs를 끝까지 간 후 수식을 계산한다. 수식계산법 Infix -> postfix 피연산자가 들어오면 바로 postfix 벡터에 넣는다. 입력이 연산자인 경우에는 스택이 비었거나, 스택 top보다 우선순위가 낮은 인풋일 때까지 pop 한다. pop한뒤에는 postfix 벡터에 넣는..
문제 풀이 CCTV 번호마다 감시하는 방법이 다르다. 하지만 1번카메라를 통해서 모두 똑같이 구현할수 있다. 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 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 96 97 ..
풀이 bfs를 사용한다. 이유는 특정 depth의 모든 경우를 탐색하기 위함. 방문 위치 표시 방법 : 가로모드 1개, 세로 모드 1개 고려한 2차원 visted 배열로 구성 한 번에 할 수 있는 것들 : 상하좌우 이동, 회전 회전 경우의 수는 위와 같이 그려서 케이스를 분리해 보았다. 검사 시 중복을 최소화하는 방향으로 묶어주었다. 파란색 동그라미는 저장되는 좌표 빨간 글씨는 거치는 점이다. 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 ..