알고리즘/programmers

[Programmers] 기둥과 보 설치

꾸준함. 2022. 7. 21. 19:46

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/60061

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

구현력을 요구하는 문제였습니다.

 

알고리즘은 아래와 같습니다.

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

 

지적, 조언, 질문 환영합니다! 질문 남겨주세요~

반응형