삼성 SW 기출문제를 열심히 풀고 있다. 이 문제는 사실 어제 풀었는데 오늘에서야 포스팅한다.
내가 접근한 방법은 실제로 선들을 90도씩 회전시키는 방법이었다. 이 과정에서 배열을 중심점을 기준으로 90도 돌리는 게 쉽지 않았다. 내가 평소에 배열의 좌표를 잡는 방식과 다르게 되어 있어서 진짜 헷갈렸다. 문제에 주어진대로 해보려다가 결국은 체념하고 내가 원래 하던 대로 바꿨더니 그나마 이해하기 편했다. 이제 와서 보면 별거 없었는데 그 당시에는 왜 이렇게 어려웠나 모르겠다. 우여곡절 끝에 문제를 다 풀고 나서 다른 사람들의 코드를 참고하니까 전혀 다른 방법으로 푸는 문제였다...! 어쩐지 다른 사람들은 대부분은 0ms인데 난 아니더라. 어떻게 내 코드가 시간 제약 안에 통과한 게 용하다.
문제에 시작점이 (0, 0), 나머지 점들은 (0,1), (-1,-1) 이런 식으로 주어지길래 선을 따라가는 문제인가 싶었지만 마땅한 아이디어가 떠오르지 않았었다. 하지만 그게 정답이었다...
스택을 활용하면 쉽게 풀 수 있는 문제였다. 어쩐지 난이도가 그렇게 높지 않더라... 그런데 무지성 push, pop 하면 되는 문제는 아니다. 결국엔 이전 스택의 정보도 계속 저장하고 있어야 하기 때문에 실제로는 벡터를 사용해서 구현했다.
중간에 코드를 바꾸면서 지역변수를 전역변수로 뺐어야 했는데 전역 변수로 선언만 해주고 지역변수 선언을 안 지워서 문제가 조금 있었다. 지워야지 생각만 하고 안 지워서 30분 버렸다.
<첫 번째 방법>
<두 번째 방법>
후기)
시간이 넉넉해서 다행이지 진짜 무식하게 풀었다...ㅋㅋ
그리고 원래는 #define을 잘 쓰다가 몇 번 안 썼다. 그런데 쓰는 쪽이 훨씬 코딩하기도 편하고 보기도 좋은 것 같다.
'PS > 백준' 카테고리의 다른 글
[BOJ] 17837 새로운 게임 2 (C/C++) (0) | 2022.04.30 |
---|---|
[BOJ] 19238 스타트 택시 (C/C++) (2) | 2022.04.27 |
[BOJ] 19237 어른 상어 (C/C++) (0) | 2022.04.26 |
[BOJ] 15684 사다리 조작 (C/C++) (0) | 2022.04.24 |
[BOJ] 17779 게리맨더링 2 (C/C++) (0) | 2022.03.26 |