글 작성자: 개발섭

삼성 역테를 풀다 보면 내가 원래 공부하는 거랑 양상이 완전히 다르다는 걸 알 수 있는데

특히 가장 많이 느끼는 건 시뮬레이션을 하게끔 코드를 짜야하는것이 가장 큰 요인인 것 같다.

 

https://www.acmicpc.net/problem/17143

 

17143번: 낚시왕

낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. 칸에는 상어가 최대 한 마리 들어있을 수 있다. 상어는 크기와 속도를 가지고 있다. 낚시왕은 가장 처음에 1번 열의 한 칸 왼쪽에 있다. 다음은 1초 동안 일어나는 일이며, 아래 적힌 순서대로 일어난다. 낚시왕은 가장 오른쪽 열의 오른쪽 칸에

www.acmicpc.net

https://www.acmicpc.net/problem/13459

 

13459번: 구슬 탈출

첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' 로 이루어져 있다. '.'은 빈 칸을 의미하고, '#'은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, 'O'는 구멍의 위치를 의미한다. 'R'은 빨간 구슬의 위치, 'B'는 파란 구슬의 위치이다. 입력되는 모든 보드

www.acmicpc.net

이런 류의 문제를 나는 개인적으로 잘 풀지 않았는데, 풀이 방식도 완전히 다르고 그저 BFS를 적용시켜서 문제를 푸는 방식이 아니라, 함수를 짜고 그에 맞는 방식으로 프로그래밍이 돌아가게 하는 것이 가장 중요하고, 어쨌든 단순하게 알고리즘을 적용해서 문제를 푸는 것이 아니라 이 문제에서 요구하는 조건을 다 맞출 수 있는 함수와 시뮬레이션을 잘 구현하는 방식이 가장 중요한 것 같다.

 

시뮬레이션에 너무 취약하다는 것을 잘 알아서 지금 내가 엄청 해매고 친구들의 도움도 받고 있는데, 진짜 너무 어려운 것 같다. 코드만 보면 대충 띡 하고 나오는 것 같지만, 경우들을 잘쪼개서 안되는경우와 되는경우를 잘 분리해서 코드들을 짜놨는데, 그것이 삼성역테를 볼때 가장 큰 핵심적인 문제 풀이 방식인 것 같다.

 

아직 많이 부족한 것 같다. 더 열심히 해야겠다.