본문 바로가기

code/BOJ

(63)
큐빙 /* 1 */ #include #include #include #define f(i, n) for(int i = 0; i < (n); ++i) using namespace std; // original char cb[2][6][3][3]; bool sd;// 초기화 완료 char clr[6] = { 'w', 'y', 'r', 'o', 'g', 'b' }; int dir['Z' + 1]; // turn int src[6][2][4] = {// 기준 p(rotax), 회전방향 +-(rotdr), src p { { 5, 2, 4, 3 },{ 4, 3, 5, 2 } }, { { 4, 3, 5, 2 },{ 5, 2, 4, 3 } }, { { 4, 0, 5, 1 },{ 5, 1, 4, 0 } }, { { 5, 1,..
백준 14889 스타트와 링크 문제: 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 코드: 전체 경우의 수(tb의 상한 + 1, as의 크기)는 1
백준 14888 연산자 끼워넣기 문제: 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱셈(×)의 개수, 나눗셈(÷)의 개수이다. www.acmicpc.net 코드: 변수명이 엉망이다... #include #include #define f(i, n) for(int i = 0; i < (n); ++i) using namespace std; int N; int oprn[11]; int oprt[10], o; int ub = -1000000000; int lb = 1000000000; int main() { ios_ba..
백준 14503 로봇 청소기 문제: 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net 코드: 인접한 상하좌우 모든 칸이 이미 청소 되었거나 벽이라면 2번 수행을 되풀이 하기 위해 continue 필요 (후진은 현재 위치를 청소하지 않기 때문에 clean을 호출하면 안 된다.)..
백준 14501 퇴사 문제: 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드: P[i]의 인덱스는 i == N - 1까지 유효 -> P[i] 사용 전 i 탈출조건 i > N #include #define f(i, n) for(int i = 0; i N) return; if (Ps > ans) ans = Ps; BF(i + 1, Ps); if(i < N) BF(i + T[..
백준 14500 테트로미노 문제: 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net 코드: visited 재방문 허용 필요 visited 재방문 위해서 dfs에서 return 전 visited 초기화 필요, 도중 return하더라도 초기화 가능토록(goto) 하드코딩 더블 체..
백준 14499 주사위 굴리기 문제: 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 코드: 문제에 주어진 주사위 전개도로 dice의 인덱스를 고정한다. 회전으로 주사위 각 면의 숫자가 src 인덱스에서 dst 인덱스로 옮겨지는 것이지, 인덱스 자체가 변하는 것이 아니다. ..
백준 12100 2048 (easy) 문제: 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net 코드: 초기상태가 최댓값일 수 있음. 숫자 갱신될 때만 max값 갱신하면 됨 #include #include #include #define f(i, n) for(int i = 0; i < (n); ++i) #define MAP(tp, r, c) ((tp)? nmap[r][c] : nmap[c][r]) using namespace std; ..