문제https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V1SYKAaUDFAWu풀이굉장히 오래 걸린 문제다. 처음 접근은 Dfs를 돌며 이차원 행렬을 넘겨주는 식으로 구현했었는데 이렇게 되면 항상 성능검사를 해야돼서 구현이 정말 복잡했다.성능검사를 하는 구현도 복잡해서 잘 못했고 재귀함수도 올바른 방법으로 구현을 하지 못했던 것 같다.결국엔 해설을 찾아보고 이해가 쉽게 가는 방법으로 다시 코드를 짜봤다.일단 Dfs로 모든 행을 하나씩 돌아보며 i-1 번째 행까지의 연속된 셀의 개수를 세고 k개 이상이면 그 열의 성능검사가 통과했다는 것을 저장해서 넘겼다.해당하는 열이 성능검사를 통과 했는지의 여부는 비트마스..
문제https://www.acmicpc.net/problem/13460풀이Dfs를 통해서 기울이는 모든 방향을 탐색해야된다.이 때 주의할 점은 아래와 같다. 이전의 기울인 방향으로는 다시 기울이지 않는다.이전의 기울인 방향의 반대 방향으로도 기울이지 않는다 (원점이 되기 때문에) 원래는 2048 처럼 기울이는걸 구현하려고 했지만 빨간공과 파란공의 우선순위 비교까지 하려면 너무 복잡해져서 포기하고 답을 찾아봤다.여러 사람들이 빨간공 따로 파란공 따로 그냥 구현했고 위치가 똑같을 때만 우선순위를 비교해 다시 이동시키는걸 확인했다.삼성 기출문제 중에 가장 난이도가 높은 문제 같다.실제로 시험에서 이런 Dfs + 구현 문제가 나오면 풀지 못할 것 같다.소스코드#include #include using names..
문제https://www.acmicpc.net/problem/12100풀이제일 싫어하는 구현문제다. 중간에 큐 사용에 대한 오류가 떴는데 중단점을 이상한 곳으로 찍어놓고 디버깅을 돌려서 해결하는데 너무너무 오래걸렸다.위, 아래, 왼쪽, 오른쪽 모든 방향을 Dfs를 통해 완전탐색하면 되는 문제다.문제의 핵심은 주어진 조건에 맞게 한 쪽 방향으로 이동한 경우를 만드는 점이다. 똑같은 수가 세 개가 있는 경우에는 이동하려고 하는 쪽의 칸이 먼저 합쳐진다. 이와 같은 조건 때문에 0이 아닌 수를 큐에 저장하는 순서는 아래와 같이 된다.방향이 위인 경우 (0,0) ~ (N-1,0) 방향이 아래인 경우 (N-1,0) ~ (0,0) 방향이 왼쪽인 경우 (0,0) ~ (N-1,0) 방향이 오른쪽인 경우 (N-1,0) ..