[프로그래머스] 12978. 배달 (C++)
코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 문제 설명 1. 각 마을은 양방향으로 연결됨 2. 마을 N까지의 거리가 K 이하면, 배달 가능 3. 마을 1에서 배달을 갈 수 있는 마을의 개수 출력 풀이 플로이드 와샬 알고리즘 1. 각 마을간의 거리를 입력받을 때마다 배열에 저장 (양방향으로!!) 1-1. 마을 a와 b 사이의 경로가 2개 이상일 수 있으니, 입력받을 때마다 최솟값으로 갱신 2. 마을 기준으로 반복문 돌면서 최소 거리 갱신 3. 마을 a -> a 비용은 0 4. 마을 ..
[프로그래머스] 49994. 방문 길이 (C++)
코딩테스트 연습 - 방문 길이 programmers.co.kr 문제 설명 1. 처음 지나는 거리의 길이 구하기 2. 방문했던 곳 또 방문할 수는 있지만, 이미 지나왔던 거리를 통해서 방문했다면 길이에 추가 X 풀이 1. -5 ~ 5 대신 0 ~ 10으로 좌표 설정 2. 좌표를 이동하기에 편리하도록 L, R, U, D을 각 0, 1, 2, 3으로 바꿈 (dx, dy 배열 사용하기 위해) 3. visit 배열에 이 좌표에서 이동한 방향 정보를 담음 (비트마스크 이용 -> 각 1, 2, 4, 8) 4. & 연산 -> 해당 방향으로 이동했었는지 확인 -> 이미 이동했었으면 길이에 더해주지 않고 이동만 함 5. 방향이 아니라 길을 방문했었는지 확인하는 것이 목표이므로 visit 배열의 도착 좌표의 이동 방향 정보..