반응형
반응형
https://www.acmicpc.net/problem/2828


문제 요약
사과를 담기 위해 바구니가 이동해야 하는 최소 거리 출력하기
참고
설명이 이해 안돼서 그려봤음!

예제 2번을 그림으로 표현하면 다음과 같다.
전체 스크린 5칸, 바구니 가로 길이 2
사과 3개
사과 떨어지는 순서 : 1 -> 5 -> 3
<이동 거리>
1일 때는 가만히 있어도 받을 수 있기 때문에 0
5일 때는 오른쪽으로 3칸 이동해서 받기
3일 때는 왼쪽으로 1칸 이동해서 받기
=> 총 4번 이동
풀이
var a = Console.ReadLine().Split().Select(int.Parse).ToList(); int s = 0, p = 1; for (int i = int.Parse(Console.ReadLine()); i-- > 0;) { int j = int.Parse(Console.ReadLine()); if (p > j) { s += p - j; p = j; } else if (j > p + a[1] - 1) { s += j - (p + a[1] - 1); p = j - a[1] + 1; } } Console.Write(s);
s는 전체 이동 거리, p는 현재 위치(바구니 길이의 가장 왼쪽 기준)
바구니의 길이는 가장 왼쪽을 p, 가장 오른쪽을 p+a[1]-1로 설정
만약 현재 위치가 1이고 바구니 길이가 2면 p=1, p+a[1]-1=2가 된다.
j는 사과가 떨어지는 위치(예제1 기준 1,5,3)
만약 현재 위치가 사과보다 오른쪽에 있으면(p>j) 전체 이동 거리 += 현재 위치 - 사과 위치; 현재 위치 = 사과 위치;
만약 현재 위치가 사과보다 왼쪽에 있으면(j>p+a[1]-1) 전체 이동 거리 += 사과 위치 - 바구니 오른쪽 위치; 현재 위치 = 사과 위치 - 바구니 길이 + 1;
만약 바구니 크기 범위(?) 안에 사과가 떨어지면 이동하지 않아도 되므로 그에 대한 조건도 딱히 쓰지 않았음!
난독증 있으면서 설명 엄청 장황하게 써버리기ㅋㅋㅋ 오늘은 일찍 끝냈으니까 산책!
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[C#]백준 2669 직사각형 네개의 합집합의 면적 구하기 - Hide (0) | 2024.11.13 |
---|---|
[C#]백준 5635 생일 - Hide (1) | 2024.11.12 |
[C#]백준 2563 색종이 - Hide (0) | 2024.11.10 |
[C#]백준 10828 스택 - Hide (0) | 2024.11.09 |
[C#]백준 13241 최소공배수 - Hide (0) | 2024.11.08 |