알고리즘 연습

[ 백준_BOJ ] 2564. 경비원 _ JAVA 문제풀이

코딩하는 너구리 2019. 10. 16. 23:14
반응형

문제

 

 

 

 

 

풀이

 

 

문제에서 주어진 위치로부터 상점들의 위치들까지에 대한 최단 거리의 합을 구하는 문제입니다.

상점까지의 거리는 시계 방향과 반시계 방향으로 나뉘기 때문에

저는 각각의 Case들에 대해 if else문과 switch문을 이용한 조건 반복문으로 풀이하였습니다.

 

코드가 상당히 길어지기 때문에 비효율적으로 풀이한 것 같습니다.

 

각각의 경우에 대하여 블록의 가로, 세로 길이 N과 M은 고정되어 있기 때문에

시계 방향으로 상점을 찾아갈 경우와 반시계 방향으로 찾아갈 경우를 Math.min ( ) 함수를 이용하여

최단거리를 answer 변수에 계속 더하여 최단 거리의 합을 찾았습니다.

 

 

 

 

코드

 

 

 

 

 

 

 

출처

 

 

https://www.acmicpc.net/problem/2564

 

2564번: 경비원

첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄에 하나씩 상점의 위치가 주어진다. 상점의 위치는 두 개의 자연수로 표시된다. 첫째 수는 상점이 위치한 방향을 나타내는데, 1은 블록의 북쪽, 2는 블록의 남쪽, 3은 블록의 서쪽, 4는 블록의 동쪽에 상점이 있음을 의미한다. 둘째 수는 상점이 블록의 북쪽 또는 남쪽

www.acmicpc.net

 

 

반응형