PS
백준 2528. 사다리
tose33
2022. 9. 17. 13:28
https://www.acmicpc.net/problem/2528
2528번: 사다리
첫 번째 줄에 층 수 N (1 ≤ N ≤ 3,000)과 층의 길이 L (1 ≤ L ≤ 3,000, L은 짝수)이 주어진다. 가장 아래층은 1층이고 가장 위층은 N층이다. 다음 N개의 줄 중 i번째 줄에는 i층의 막대기의 길이 l (1< ≤
www.acmicpc.net
각 층의 막대기의 정보를 담은 구조체를 만들어서 관리하면 편하다.
struct Stick
{
int begin; // 좌측 끝
int end; // 우측 끝
int dir; // 방향
};
스틱위에서 움직이는데 걸리는 시간은 0이고 위 스틱으로 이동할수 있을 경우 이동하는데 걸리는 시간도 0 이므로, 현재 층 스틱과 위층 스틱이 겹치는 부분이 있는지 판단하고 있다면 이동하면 된다.
겹치는지 판단은 아래 로직이 가장 편한것 같다
if(sticks[i].begin > sticks[i+1].end || sticks[i].end < sticks[i+1].begin)