소스 코드
풀이 과정
- 스크린의 칸 수 N, 한 바구니가 차지하는 칸 수 M을 공백을 두고 입력 받음
- 떨어지는 사과의 총 개수 J 입력 받음
- 사과가 떨어지는 위치를 입력 받아 move 리스트 안에 저장
- 총 이동 칸 수 res, 바구니의 왼쪽 끝 위치 left, 바구니의 오른쪽 끝 위치 right 초기화
- 바구니의 시작 위치는 1이고 바구니의 총 길이는 M이므로 left는 1, right는 M
- move 리스트 안에 저장된 위치마다 반복문 실행
- 이동해야 하는 위치 i가 left보다 작다면 왼쪽으로 이동해야 하므로 left-i 만큼 이동
- right도 함께 왼쪽으로 이동하므로 원래 위치에서 이동한 만큼 빼줌
- i가 left보다 작다면 left가 i로 이동하는 것이 최소 이동거리가 되므로 left는 i로 갱신
- 이동해야 하는 위치 i가 right보다 크다면 오른쪽으로 이동해야 하므로 i-right만큼 이동
- left도 함께 오른쪽으로 이동하므로 원래 위치에서 이동한 만큼 더해줌
- i가 right보다 크다면 right가 i로 이동하는 것이 최소 이동거리가 되므로 right는 i로 갱신
- 이동해야 하는 위치 i가 left보다 작다면 왼쪽으로 이동해야 하므로 left-i 만큼 이동
- 최소 이동거리인 res 출력
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 3986 좋은 단어 (0) | 2023.02.04 |
---|---|
백준[python/12759] 틱!택!토! (0) | 2023.02.04 |
[백준 / Python] #7795 먹을 것인가 먹힐 것인가 (0) | 2023.02.02 |
[백준/C++] 1018번 체스판 다시 칠하기 (0) | 2023.02.02 |
[백준/C++] 2999번 비밀 이메일 (0) | 2023.02.01 |