[백준 12094번] 2048 (Hard)
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/12094 12094번: 2048 (Hard) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 백트랙킹 https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 2048..
[백준 12100번] 2048(Easy)
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 시뮬레이션 4가지 이동방향을 구현한 뒤 DFS로 4가지 방향에 대한 모든 경우의 수를 구하면 된다. 한 가지 방향만 잘 구현하면 나머지는 비슷하기에 금방 구현할 수 있다. up방향을 구현할 때 그냥 각 열에 원소를 맨 위 원소부터 시작해서 하나씩 잡고 위로 당겨보면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19..
[백준 18808번] 스티커 붙이기
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 시뮬레이션 이 문제는 배열을 회전하는 것만 잘 구현하면 되는 문제이다. 배열을 그려서 규칙을 잘 보면 X행에 있는 모든 원소는 90도 회전하면 Y열로 이동하고, row, col 값이 서로 바뀐다 /*idx 번째 스티커를 1회전*/ void rotate(int idx) { int temp[10][10]; for (int x = 0; x
[백준 2636번] 치즈
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net BFS X로 표시된 곳엔 치즈가 없으니깐 X로 표시된 곳 중 한 곳에서 공기가 출발한다고 생각하고 BFS를 돌리면서 공기와 치지를 접촉시켜 보면 됩니다. 1. 공기는 이미 방문했던 곳을 다시 방문할 필요가 없다 2. 공기가 접촉한 적이 없는 치즈를 만나면 그곳을 한 시간 후 녹을 치즈로 바꾸고('c') 방문 체크를 합니다. -> 그리고 한 시간 후 공기는 이 위치에서 다시 BFS를 진행하도록 임시 큐에 ..
[백준 15683번] 감시
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 시뮬레이션 1번 cctv부터 n번 cctv까지 한 번씩 회전시켜보면서 모든 경우의 수를 다 해보면 되는 완전 탐색 문제입니다. 문제는 방향을 어떻게 처리할까 인데 각 CCTV의 방향을 분리해서 생각해보면 쉽게 문제를 해결할 수 있습니다. int dx[4] = {0, -1, 0, 1}; //0 == right, 1 == up, 2 == left, 3 == down int dy..
[백준 1987번] 알파벳
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net DFS, 백트랙킹 DFS로 갈 수 있는 최장 거리를 구하면 되는데 방문한 좌표로 방문 체크를 하는게 아니라 알파벳 사용여부로 방문체크를 해야 된다. visited[26]; ->알파벳 'A' ~ 'Z' 각각에 'A'를 빼주면 0 ~ 25의 값에 대응시킬 수 있다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ..
[백준 18809번] Gaaaaaaaaaarden
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/18809 18809번: Gaaaaaaaaaarden 첫째 줄에 정원의 행의 개수와 열의 개수를 나타내는 N(2 ≤ N ≤ 50)과 M(2 ≤ M ≤ 50), 그리고 초록색 배양액의 개수 G(1 ≤ G ≤ 5)와 빨간색 배양액의 개수 R(1 ≤ R ≤ 5)이 한 칸의 빈칸을 사이에 두 www.acmicpc.net 백트랙킹 1. 배양액을 뿌릴 수 있는 땅에 대해서 같은 것이 있는 순열(RRRGG...)을 구한다. 2. 뽑은 수열에 대해서 큐 두 개를 준비해서 빨간색 배양액, 초록색 배양액을 동시에 BFS를 진행한다. -> 큐에는 항상 같은 레벨(같은 초)의 좌표가 들어간다. -> BFS를 진행할 때 매 초마다 빨간색 배양액과 초록색 배양..
[백준 1799번] 비숍
·
알고리즘 문제풀이/백준
문제 링크: https://www.acmicpc.net/problem/1799 1799번: 비숍 첫째 줄에 체스판의 크기가 주어진다. 체스판의 크기는 10이하의 자연수이다. 둘째 줄부터 아래의 예와 같이 체스판의 각 칸에 비숍을 놓을 수 있는지 없는지에 대한 정보가 체스판 한 줄 단위로 www.acmicpc.net 백트랙킹 https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 이문제는 9663번 문제와 비슷하게 접근하면 되는데 핵심은 다음 세 가지입니다. 1. 체스..