본문 바로가기

알고리즘 문제풀이/코드트리(삼성 기출)

냉방 시스템(2021 하반기 오전 2번, 백준 23289 온풍기 안녕!)

문제 링크: https://www.codetree.ai/frequent-problems/cooling-system/description

 

코드트리

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

*같은 문제: 백준 23289 - 온풍기 안녕!

 

문제 전반적인 구현 자체는 4-50분 안에 끝냈는데, 딱 조건 하나. 진짜 조건 하나 때문에 1시간 넘게 맞왜틀을 시전해버렸다... 백준이었으면 좀 더 빨리 찾았을 것 같은데, 코드트리쪽 예시 TC가 좀 더 불친절한 것 같다. 시험 준비하는데 있어서는 오히려 좋아...?

 

벽이 특정 칸의 위쪽 또는 왼쪽에만 설치되는 식으로 주어지기 때문에, 에어컨으로 바람을 보낼 때,

  - 이동 방향이 상/좌면 해당 위치에서 체크

  - 이동 방향이 하/우면 이동한 위치에서 위쪽/왼쪽 벽 체크

위와 같은 식으로 벽을 체크했다. 체크하는 함수는 block_check으로 따로 구현해서 사용했다.

 

매 위치에서 전방, 시계/반시계방향 45도로 바람을 보내는데, 이미 보내고자 하는 위치에 바람이 도달해있으면 스택에 넣지 않는 식으로 중복되는 상황을 제거했다.

 

주위와 시원함을 나누는 부분에서는, 마찬가지로 중복도 막고, 벽 체크도 쉽게 하기 위해 해당 위치의 위쪽/왼쪽하고만 interaction하도록 했다.

 

... 여기까지는 진짜 구현하는데 얼마 안 걸렸는데, 에어컨이 직선거리로 5까지만 찬 바람을 보낼 수 있다는 사실을 까먹고... 시원함 지수가 0 이하일때도 계속 전파되도록 해버렸다. 이거 때문에 1시간 넘게 날리다니... 현장에서는 이러지 말자...