본문 바로가기

전체 글

(168)
백준 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; ..
백준 3190 뱀 문제: 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따 www.acmicpc.net 코드: map 상하좌우에 padding 넣어서 가로 세로 크기가 2씩 증가했지만 배열 크기를 증가시키지 않아 '틀렸습니다'. /* 1. 좌표 1부터 시작하므로, 뱀 시작 위치는 (1, 1) */ #inc..
nm 혼용 x
SWEA 5648 원자 소멸 시뮬레이션 1. 다른 문제와 달리 좌표평면 상의 좌표가 주어진다. 좌표가 가로위치 -> 세로위치 순으로 주어지며, 오른쪽 아래 방향이 가로위치와 세로위치가 증가하는 방향이다. 2. while(1)의 탈출조건인 ctr T; for (int tc = 1; tc > N; for(int a = 0; a > x >> y >> d >> k; atoms[a] = { 2 * (x + 1000), 2 * (y + 1000), d, k }; } int ans = 0; while (1) { c = 1; ctr = 0; for (int a = 0; a < N; ++a) { if (atoms[a].x == -1) continue; atoms[a].x += dx[atoms[a].d..
첫번째 #include #include #include #include #include #define hash(r, c) ((r) * 2002 + (c)) using namespace std; int T, N; unordered_map vst;// 초기화 완료 int ans;// 초기화 완료 struct info{ int r, c, d, k; }; vector atom; #define IN(r, c) (0 > r >> c >> d >> k; atom.push_back({ r + 1000, c + 1000, d, k }); } ans = 0; while(1) { bool proc = false; vst.clear(); for(int a = 0; a < atom.size(); ++a){ // 처리 대상 아니면 co..
d #include #include #include #include #include #define hash(r, c) ((r) * 2002 + (c)) using namespace std; int T, N; int vst[2001][2001];// 초기화 완료 vector cls[1001];// 초기화 완료 int ans;// 초기화 완료 struct info{ int r, c, d, k; }; vector atom; #define IN(r, c) (0 > r >> c >> d >> k; atom.push_back({ r + 1000, c + 1000, d, k }); } ans = 0; int c = 0; while(1) { bool proc = false; for (int cc = 1; cc < c; +..
d #include #include using namespace std; int T, N; int vst[2001][2001];// 초기화 완료 vector cls[1001];// 초기화 완료 int ans;// 초기화 완료 struct info{ int r, c, d, k; }; vector atom; #define IN(r, c) (0 > r >> c >> d >> k; atom.push_back({ r + 1000, c + 1000, d, k }); } ans = 0; int c = 0; while(1) { bool proc = false; for (int cc = 1; cc < c; ++cc) cls[cc].clear(); c = 1; for(int a = 0; a < atom.size(); ++a)..
백준 9328 열쇠 문제: 9328번: 열쇠 문제 상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 필요하다. 상근이는 일부 열쇠를 이미 가지고 있고, 일부 열쇠는 빌딩의 바닥에 놓여져 있다. 상근이가 훔칠 수 있는 문서의 최대 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스의 수는 100개를 넘지 않는다. 각 www.acmicpc.net 코드: 아이템 주워먹고 맵에서 지우기! /* 1. 아이템 먹고 맵에서 지우기 */ #include #include #include #define is_lc(ch) ('a' > map[r][c]; } ..