본문 바로가기

SWEA/삼성SW역량테스트 C++

[SWEA] 무선충전

[문제]

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

www.swexpertacademy.com

[풀이]

 

1) 사용자는 2명, 충전소는 여러 좌표에 위치해 있다. 

 

2) 각 사용자는 주어진 이동 방향에 따라 이동한다. 

 

3) 맨해튼 거리 공식 ( 좌표 A, B가 있을 때, |A.x - B.x| + |A.y - B.y| 가 충전소의 충전범위 내에 있다면 충전을 한다. )

 

4) 두 명이 동시에 한 충전소에서 충전을 하게 될 경우 접속한 사용자의 수만큼 균등하게 충전이 된다. 

 

5) 두 명의 충전한 충전량의 최대값을 구하는 것이기 때문에 균등하게 나누지 않고 한 명이 모두 충전하는 것으로 계산해야 한다. 

 

6) 각 사용자는 지도의 양 끝에서 출발한다. => 이동 방향에 따라서 이동하면서 충전소의 충전 범위 내에 들어가는지 확인한다. 

 

7) 한 충전소에 여러 번 충전되는 것을 방지하기 위해 visited 배열을 사용 

 

* chk[9][2] => 사용자는 2명 / 충전소는 최대 9개 

* userMove[2][101] => 사용자는 2명 / 최대 100시간동안 움직임 

 

* charge() => 각 충전소에서 사용자들이 충전한 최대 충전량을 반환한다. 

* moveUsers() => 사용자들을 이동시킨다. 

 

* 유의할 점 

x와 y좌표를 평면 좌표로 생각해야 한다. (상 -> y-- / 좌 -> x++ ...)


'SWEA > 삼성SW역량테스트 C++' 카테고리의 다른 글

[SWEA] 핀볼게임  (0) 2019.07.31
[SWEA] 디저트가게  (0) 2019.07.29
[SWEA] 탈주범 검거  (0) 2019.07.29
[SWEA] 홈 방범 서비스  (0) 2019.07.29
[SWEA] 등산로 조성  (0) 2019.07.28