목록백준 (183)
Study hard
https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 � www.acmicpc.net [풀이] A에서 B로 변환하기 위해 필요한 최소한의 명령어 나열을 출력하는 문제이므로 bfs를 사용했다. DSLR연산을 각각 한 상태를 queue에 집어넣고 B가 나오면 그때까지 사용했던 연산 문자열을 반환했다. #include #include #include //memset #include using namespace std; struct Value { int n; string ..
https://www.acmicpc.net/problem/16948 16948번: 데스 나이트 게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 "데스 나이트"를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면, (r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크 www.acmicpc.net [풀이] 최소 이동 횟수를 구하므로 bfs를 사용했다. 데스 나이트가 있는 칸에서 6방향을 모두 살펴보며 칸을 이동할 때마다 전 칸까지의 이동 횟수 + 1을 저장해둔다. #include #include #include //memset using namespace std; struct pos { int r, c; }; i..
https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net [풀이] 같은 알파벳이 적힌 칸을 두 번 지날 수 없다는 조건이 있으므로 새로운 알파벳을 지날 때마다 체크를 해주었다. 한 칸씩 움직일 때마다 최대 칸 수를 갱신한다. #include #include using namespace std; int R, C; char Board[20][20]; bool check[25];//ascii코드로 변환해서 체크 const int dx[] = { -1,..
https://www.acmicpc.net/problem/16198 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있� www.acmicpc.net [풀이] 모든 경우의 수에 대해 모을 수 있는 에너지 양을 구하는 브루트 포스로 문제를 풀었다. 재귀함수를 이용해 구슬이 3개 남았을 때 1번 구슬의 무게와 3번 구슬의 무게를 곱한 것을 지금까지 축적한 합에 합한 값이 최대값인지 확인한 후 return 해주었다. #include #include using namespace std; int N;//에너지 구슬의 개수 vector W(10);..
https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변� www.acmicpc.net [풀이] 브루트 포스 문제이므로 만들 수 있는 모든 테트로미노에 대해 그 합이 가장 최대인 수를 구하면 된다. 위와 같은 모양은 2차원 map에서 상하좌우 경로를 탐색하는 방법으로 쉽게 구할 수 있지만, 위와 같은 모양은 3칸까지 선택한 상황에서, 현재 칸의 상하좌우 칸을 검사했을 때 그 칸이 이미 선택된 경우 그 칸에 대해 상하좌우 칸을 다시 검색하여 만들 수 있다. 이렇게 4칸을 모두 선택했..
https://www.acmicpc.net/problem/15658 15658번: 연산자 끼워넣기 (2) N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 연산자의 개수� www.acmicpc.net [풀이] 14888번 연산자 끼워넣기와 똑같은 풀이이다. 2020/08/13 - [백준/브루트 포스] - (c++)백준 14888번: 연산자 끼워넣기 (c++)백준 14888번: 연산자 끼워넣기 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘..