본문 바로가기

백준

(148)
레벨 햄버거 - 재귀문제 www.acmicpc.net/problem/16974 16974번: 레벨 햄버거 상근날드에서 오랜만에 새로운 햄버거를 출시했다. 바로 레벨-L 버거이다. 레벨-L 버거는 다음과 같이 만든다. 레벨-0 버거는 패티만으로 이루어져 있다. 레벨-L 버거는 햄버거번, 레벨-(L-1) 버거, www.acmicpc.net 문제 상근날드에서 오랜만에 새로운 햄버거를 출시했다. 바로 레벨-L 버거이다. 레벨-L 버거는 다음과 같이 만든다. 레벨-0 버거는 패티만으로 이루어져 있다. 레벨-L 버거는 햄버거번, 레벨-(L-1) 버거, 패티, 레벨-(L-1)버거, 햄버거번으로 이루어져 있다. (L ≥ 1) 예를 들어, 레벨-1 버거는 'BPPPB', 레벨-2 버거는 'BBPPPBPBPPPBB'와 같이 생겼다. (B는 햄버거..
원판 돌리기 www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net #include #include #include using namespace std; int wonpan[51][51]; int check[51][51]; int n, m, t; int NON = 99999; struct s { int x, d, k; }spin[51]; int dx[] = { -1,1,0,0 }; int dy[] = { 0,0,1,-1 }; void clockwise(int w..
새로운 게임2 www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net #include #include #include using namespace std; struct horse { int x, y, d; } h[10]; int N, K; int dx[] = { 0, 0, 0, -1, 1 }; int dy[] = { 0, 1, -1, 0, 0 }; int turn[] = { 0, 2, 1, 4, 3 }; int color[13][13]; vector info[13][13]; ..
새로운 게임 www.acmicpc.net/problem/17780 17780번: 새로운 게임 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net #include #include using namespace std; struct horse { int x, y, d; bool is_bottom; } h[10]; int N, K; int dx[] = { 0, 0, 0, -1, 1 }; int dy[] = { 0, 1, -1, 0, 0 }; int turn[] = { 0, 2, 1, 4, 3 }; int color[13][13]; vector info[13][..
기타리스트 www.acmicpc.net/problem/1495 1495번: 기타리스트 첫째 줄에 N, S, M이 주어진다. (1 ≤ N ≤ 100, 1 ≤ M ≤ 1000, 0 ≤ S ≤ M) 둘째 줄에는 각 곡이 시작하기 전에 줄 수 있는 볼륨의 차이가 주어진다. 이 값은 1보다 크거나 같고, M보다 작거나 같다. www.acmicpc.net #include #include using namespace std; int main() { int v[100]; bool dp[101][1001]; int n, s, m; memset(dp, false, sizeof(dp)); cin >> n >> s >> m; for (int i = 0; i > v[i]; } dp[0][s] = true; ..
벽 부수고 이동하기 www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net /* 벽부수고 이동하기 2206번 */ #include #include #include #include #include using namespace std; int d[1005][1005]; int check[1005][1005][2]; int dx[] = { -1,1,0,0 }; int dy[] = { 0,0,-1,1 }; queue q; int n, m; int func(int x,..
뮤탈리스크 www.acmicpc.net/problem/12869 12869번: 뮤탈리스크 1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다. www.acmicpc.net #include #include #include #define INF 999999999 using namespace std; int dp[70][70][70]; int n, a, b, c; int func(int x, int y, int z) { if (!x&&!y&&!z)return 0; int &ret = dp[x][y][z]; if (ret != -1)return ret; ret = INF; ret = min(re..
평범한 배낭 www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net #include #include #include #include using namespace std; int arr[101][100001]; int main() { int n; int weight; cin >> n; cin >> weight; memset(arr, 0, sizeof(arr)); vectorthings(100); for (int i..