본문 바로가기
반응형

전체 글1307

[BOJ] 백준 10997 별 찍기 - 22 출처: 출처: https://www.acmicpc.net/problem/10997 Input 2 Output ***** * * *** * * * * * * * * ***** 가로/세로 길이의 변화 (※ n = 1인 초기값 제외) (가로) 1 → 5 → 9 → 13 → 4(n-1) + 1 = 4n - 3 (세로) 1 → 7 → 11 → 15 → 가로 길이 + 2 재귀함수를 이용해서 구현합니다. 각 재귀함수의 시작점은 다음과 같습니다. 각 시작점에서 아래 과정으로 별을 그려나갑니다. ① 왼쪽으로 width만큼 별 그리기 ② 아래쪽으로 height만큼 별 그리기 ③ 오른쪽으로 width만큼 별 그리기 ④ 위로 height - 2 만큼 별 그리기 ⑤ 왼쪽으로 별 1개를 그립니다. ⑥ n > 3일 때는 위의 과정.. 2021. 2. 26.
[BOJ] 백준 10994 별 찍기 - 19 출처: www.acmicpc.net/problem/10994 Input 3 Output ********* * * * ***** * * * * * * * * * * * * * * * ***** * * * ********* 별들이 그려지는 규칙을 파악하여 구현하는 문제. Input data의 변화를 보면 쉽게 규칙을 확인할 수 있습니다. n ≥ 2인 경우 『*』 로 □ 형태로 둘러 싸인것을 확인할 수 있습니다. 바깥쪽 테두리부터 안쪽 테두리까지 재귀적으로 별을 그려나갑니다. [n = 3] - 각 테두리의 길이 len = 4 * (n - 1) + 1; - 좌측 상단 지점을 (x, y)를 기준점 설정 ① n = 3일 때, (0, 0)에서 길이 9의 테두리를 가집니다. len = 4 * (3 - 1) + 1 = .. 2021. 2. 26.
[BOJ] 백준 1405 미친 로봇 출처: https://www.acmicpc.net/problem/1405 Input 2 25 25 25 25 Output 0.75 로봇은 총 2번의 행동을 수행하며, 동서남북으로 움직이는 확률은 25%로 1/4 확률에 해당 Q. 2번의 움직임에서는 같은 곳을 재방문 하는 경우는 무엇일까? A. 동서 / 서동 / 남북 / 북남이 해당됩니다. Q. 반대로 재방문 하지 않는 경우는 무엇일까? 1. 동쪽으로 이동 후 (서쪽을 제외한) 동, 북, 남 → (1/4 * 1/4) + (1/4 * 1/4) + (1/4 * 1/4) = 3 / 16 2. 서쪽으로 이동 후 (동쪽을 제외한) 서, 북, 남 → (1/4 * 1/4) + (1/4 * 1/4) + (1/4 * 1/4) = 3 / 16 3. 남쪽으로 이동 후 (북쪽.. 2021. 2. 26.
[BOJ] 백준 1063 킹 출처: https://www.acmicpc.net/problem/1063 Input A1 A2 5 B L LB RB LT Output A1 A2 ① 주어진 명령에 따라 킹의 다음 이동 지점 확인 ② 체스판을 벗어나는지 확인 → 벗어난다면 해당 명령 무시 ③ 돌맹이가 있는지 확인 → 돌맹이가 존재한다면 돌맹이를 킹과 같은 방향으로 이동 가능한지 확인 → 돌맹이가 체스판을 벗어나는 경우 해당 명령어 무시 #include #include #include #include using namespace std; string dir[] = { "R", "L", "B", "T", "RT", "LT", "RB", "LB"}; int dx[] = {0, 0, -1, 1, 1, 1, -1, -1}; int dy[] = {1.. 2021. 2. 26.
[BOJ] 백준 3985 롤 케이크 출처: https://www.acmicpc.net/problem/3985 Input 10 3 2 4 7 8 6 9 Output 3 1 1..N 방청객 순서대로 기대하는 케이크 개수와 받을 수 있는 케이크를 처리하므로 순차적으로 기존 값과 비교하며 구할 수 있습니다. ① 기대하는 케이크 개수 ▶ [a b] → a~b번까지 케이크 개수 = b - a + 1 ② 실제 받을 수 있는 케이크 개수 ▶ 앞선 방청객들이 받은 케이크를 제외해서 셉니다. #include using namespace std; bool canTake[1001]; int L, N; int firstCnt = 0, firstAns, secondCnt = 0, secondAns; int main() { ios_base::sync_with_std.. 2021. 2. 26.
[BOJ] 백준 1173 운동 출처: https://www.acmicpc.net/problem/1173 Input 5 70 120 25 15 Output 10 - 초기 맥박 상태는 문제에서 제시한 최소 맥박 상태와 동일. - N분의 운동을 하기 위한 최소시간 (운동 + 휴식)을 찾는 문제로, 맥박 상태에 따라 최대한 운동을 하는 Greedy 방식 이용 - 운동을 하지 못하는 상태는 초기 상태 m (= 최소 맥박 조건)에서 한번 운동했을 때 최대 맥박(= M)을 초과하는 경우 #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, m, M, T, R; cin >> N >> m >> M >.. 2021. 2. 26.
[BOJ] 백준 2580 스도쿠 출처: https://www.acmicpc.net/problem/2580 Input 0 3 5 4 6 9 2 7 8 7 8 2 1 0 5 6 0 9 0 6 0 2 7 8 1 3 5 3 2 1 0 4 6 8 9 7 8 0 4 9 1 3 5 0 6 5 9 6 8 2 0 4 1 3 9 1 7 6 5 2 0 8 0 6 0 3 7 0 1 9 5 2 2 5 8 3 9 4 7 6 0 Output 1 3 5 4 6 9 2 7 8 7 8 2 1 3 5 6 4 9 4 6 9 2 7 8 1 3 5 3 2 1 5 4 6 8 9 7 8 7 4 9 1 3 5 2 6 5 9 6 8 2 7 4 1 3 9 1 7 6 5 2 3 8 4 6 4 3 7 8 1 9 5 2 2 5 8 3 9 4 7 6 1 각 칸에서 확인해야 영역은 크게 3가.. 2021. 2. 26.
[BOJ] 백준 1347 미로 만들기 출처: https://www.acmicpc.net/problem/1347 Input 5 RRFRF Output .. .# 문제에서 N이 0보다 크고 50보다 작다고 했으므로 상하좌우 어떤 방향이든 한 방향으로만 가는 경우를 고려해서 미로의 크기를 101 × 101 설정 따라서 시작점을 배열의 가운데 지점 (50, 50)으로 설정 이 문제에서는 map[101][101] 크기에서 실제 미로의 크기를 추출해야 합니다. 직사각형 미로에서 기준점격인 시작점과 끝점을 알아야 합니다. 시작점과 끝점을 시작 위치(50,50)에서 이동할 때마다 비교해서 x, y의 최솟값(왼쪽 맨 위)이 시작점, x,y의 최댓값(오른쪽 맨 아래)이 끝점이 되도록 갱신해줍니다. 최종적으로는 직사각형 범위만큼을 출력합니다. #include .. 2021. 2. 26.
[BOJ] 백준 1986 체스 출처: https://www.acmicpc.net/problem/1986 Input 4 4 2 1 4 2 4 1 1 2 1 2 3 Output 6 일반 체스와 다른 점은 Pawn은 상대팀의 말을 잡을 수 없기에 공간만 차지하고 있다고 보면 됩니다. Queen → Knight → Pawn 순으로 위치를 입력받습니다. 움직일 수 있는 Queen과 Knight에 대해 잡을 수 있는 공간을 board[][]에 표시합니다. #include using namespace std; char board[1002][1002]; int N, M, cnt, answer = 0; int Q_dx[] = { 0, 0, -1, 1, -1, -1, 1, 1 }; int Q_dy[] = { -1, 1, 0, 0, -1, 1, -1, .. 2021. 2. 26.
[BOJ] 백준 1331 나이트 투어 출처: https://www.acmicpc.net/problem/1331 Input A1 B3 A5 C6 E5 F3 D2 F1 E3 F5 D4 B5 A3 B1 C3 A2 C1 E2 F4 E6 C5 A6 B4 D5 F6 E4 D6 C4 B6 A4 B2 D1 F2 D3 E1 C2 Output Valid 6 x 6 체스판에서 나이트가 이동하므로 나이트 투어를 위해서는 처음 지점을 포함해서 총 36개 칸을 지나쳐야 합니다. 먼저, 주어진 경로대로 나이트가 이동할 수 있는지 확인합니다. 나이트가 한번에 이동할 수 있는 지점은 아래와 같습니다. 주어진 입력은 모든 칸을 순서없이 나열한 것이므로 이동 가능 여부만 확인하며, 별도 모든 칸을 투어했는지는 확인할 필요가 없습니다. 그리고, 마지막 지점에서 다시 처음지점으.. 2021. 2. 26.
반응형