문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/60061
구현력을 요구하는 문제였습니다.
알고리즘은 아래와 같습니다.
1. 주어진 build_frame 벡터를 전처리하여 설치/제거 가능 여부를 판단한 뒤 set 자료구조에 추가/삭제를 해줍니다.
1.1 저는 세로를 y, 가로를 x로 처리했고 좌상단을 0, 0으로 봤기 때문에 y를 n - frame[1]로 처리한 뒤 설치/제거 가능 여부를 판단했습니다.
2. 설치 가능 여부는 문제에서 주어진대로 구현하면 되었는데 이를 위해 visited 3차원 배열을 선언해줬습니다. 또한, build_frame 벡터는 1-index이므로 100 * 100 * 2가 아닌 101 * 101 * 2로 선언해줘야 합니다.
3. 제거 가능 여부는 해당 기둥/보를 제거했을 때, 현재 설치된 기둥/보를 다 설치할 수 있는지 여부를 판단해주면 됩니다.
4. 마지막에 answer 배열에 기둥/보를 추가할 때, 앞서 1.1에서 y를 n - y로 만들었으므로 다시 역으로 n - y로 변환한 뒤 추가해줘야 하고 문제에서 주어진 조건에 맞게 정렬을 한 뒤 반환해주면 됩니다.
개발환경: Programmers IDE
지적, 조언, 질문 환영합니다! 질문 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 징검다리 건너기 (0) | 2022.07.26 |
---|---|
[Programmers] 길 찾기 게임 (0) | 2022.07.26 |
[Programmers] 광고 삽입 (0) | 2022.07.21 |
[Programmers] 몸짱 트레이너 라이언의 고민 (1) | 2022.07.18 |
[Programmers] 보행자 천국 (0) | 2022.07.15 |