일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 자바
- 프로그래머스
- 2020 KAKAO BLIND RECRUITMENT
- CS 스터디
- 비트마스크
- 2018 KAKAO BLIND RECRUITMENT 1차
- 카카오
- map
- dfs
- 젠킨스
- 알고리즘
- Java
- 2018 카카오 공채
- 삼성 SW 역량테스트
- 삼성 SW 기출문제
- set
- gradle
- 2020 카카오 공채
- 2018 KAKAO BLIND RECRUITMENT
- 카카오 공채
- bfs
- 백준
- 2019 KAKAO BLIND RECRUITMENT
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 2019 카카오 공채
- c++
- 2018 카카오
- Baekjoon
- 부스트코스
- Today
- Total
목록프로그래머스 (32)
아무코딩

문제풀이 실제 모의 코테를 칠 때 알고리즘 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; ..

블록 위치를 따로 저장하고 여러 번 돌리는 게 효율적일 거 같아서 시도하였으나 매우 번거로워 방법을 바꾸고 이 방법으로 풀었다. 풀이 과정 풀면서 고려했던 사항 채울수 있는지 체크하는 방법 구현 -> 위에서 쭉 내려보며 0이 아닌 게 있는지 체크한다. 있으면 채울 수 없다. 하지만 가리던 게 지워져서 원래는 못 채우던걸 채울 수 있다. -> 여러 번 돌려서 지운 게 없을 때까지 돌린다. 소스코드 더보기 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 ..
풀이 문제에서 요구한 조건대로 재귀코드를 작성하면 된다. 소스코드 더보기 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 #include #include #include #include using namespace std; string divide_str(string str) { int cntl=0, cntr=0; for (int i = 0; i

풀이 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 ..
풀이과정 검사는 단위별로 진행한다. 일치하는 경우에는 그대로 다음 단위를 검사 일치하지 않는 경우에는 출력할 string에 출력한다. 이때, 1인경우에는 숫자를 출력하지 않으므로 따로 처리해준다. 주의사항 문자열의 길이가 1인경우가 존재한다 이를 잘 처리해줘야됨. 테스트 케이스 5번이 아마 문자열 길이가 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 #include #include #include #include using namespace std; int u..