일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2018 카카오 공채
- bfs
- 백준
- 2019 KAKAO BLIND RECRUITMENT
- 부스트코스
- Java
- dfs
- 삼성 SW 기출문제
- 알고리즘
- gcp
- 2018 KAKAO BLIND RECRUITMENT 1차
- 프로그래머스
- Baekjoon
- 카카오
- 젠킨스
- CS 스터디
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 2020 카카오 공채
- gradle
- 2018 카카오
- 자바
- 2019 카카오 공채
- 2020 KAKAO BLIND RECRUITMENT
- 비트마스크
- map
- 2018 KAKAO BLIND RECRUITMENT
- 카카오 공채
- 삼성 SW 역량테스트
- set
- c++
- Today
- Total
목록bfs (3)
아무코딩
문제 가로와 세로의 길이가 같은 평지에서 벌목을 한다. 그 지형은 0과 1로 나타나 있다. 1은 아직 잘려지지 않은 나무를 나타내고 0은 아무 것도 없음을 나타낸다. 다음 지형을 보자. B 0 0 1 1 B 0 0 0 0 B 0 0 0 0 1 1 0 0 0 E E E 0 0 위의 지형에서 길이 3인 통나무 BBB를 밀거나 회전시켜 EEE의 위치로 옮기는 작업을 하는 문제를 생각해 보자. BBB와 EEE의 위치는 임의로 주어진다. 단 문제에서 통나무의 길이는 항상 3이며 B의 개수와 E의 개수는 같다. 통나무를 움직이는 방법은 아래와 같이 상하좌우(Up, Down, Left, Right)와 회전(Turn)이 있다. 코드 의미 U 통나무를 위로 한 칸 옮긴다. D 통나무를 아래로 한 칸 옮긴다. L 통나무를..
초반에 문제를 좀 잘못 이해해서 고치는 데 시간을 좀 썼다. 첨에보고 단순한 인접리스트 + BFS문제인지 알았다. 문제풀이 조금 신선한 방식의 문제였다. 하이퍼 튜브내에선 서로서로 바로바로 갈수있다는 개념을 적용하기위해 단순한 graph에서 가상의 node(역)를 추가하여 가상의 역인 경우에는 실제로 횟수를 올리지 않는 방법으로 구현하였다. 소스코드 더보기 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 #incl..
매우 참신한 문제이다. 처음에는 메모리 제한이 적길래 bfs를 쓰지 말라는 건 줄 알았는데 이후 문제를 읽다 보니 그런 문제가 아니었다. 풀이 방법 입력을 나중에 방문 처리하기 유리하게 하나의 int로 받는다. 여기서 0은 9로 변경하여 받는다. 왜냐하면 012345678처럼 0이 맨 앞에 오는 경우에는 int로 처리했을 때 12345678이 되기 때문에 9자리 숫자가 아니라 8자리 숫자가 된다. 방문 체크는 map을 이용한다. map을 사용하지 않으면 매번 찾아야 된다. index를 따로 저장하기보다는 map을 사용하여 한번에 찾는 것이 유리하다. 현재 9(원래 0)의 위치는 string으로 변환한 뒤 find 하여 찾는다. string으로 변환한 이유는 0의 위치를 쉽게 찾기 위해서이다. string..