일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 링크드리스트
- BFS
- 메모리풀
- BeautifulSoup
- 피보나치 수
- 비트마스크
- 재귀
- 크루스칼
- 그리디
- 중복 순열
- lis
- 우선순위 큐
- 큐
- Knapsack
- MST
- 시뮬레이션
- 순열
- 완전 탐색
- DP
- 스택
- 분할 정복
- 클래스
- 문자열
- 이분 탐색
- 조합
- 백트래킹
- 세그먼트 트리
- SSAFY
- dfs
- 빠른 입출력
- Today
- Total
목록시뮬레이션 (17)
작심 24/7
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. findTop 0열부터 W - 1열까지 돌면서 0행부터 탐색하며 맨 위에 있는 벽돌을 찾아내는 함수이다. 이 행위를 재귀로 N번 반복하면 N개 중 N개를 중복 포함에서 뽑는 중복 순열이 된다. 맨 위에 있는 벽돌을 찾아내면 거기에 구슬을 떨어뜨리고 다음 동작들을 (연쇄 벽돌 없애기, 벽돌 재 정렬하기) 실행한 뒤 돌아와서 재귀로 구슬을 떨어뜨릴 다음 위치를 찾는다. 2. findChain 구슬을 떨어뜨린 벽돌을 기준으로 연쇄된 모든 벽돌을 찾아 0으로 바꿔주는 함수이다. 상하좌우를 DFS 탐색하며 명중된 벽돌들을 찾아서 큐에 넣어준 뒤 0으로 바꿔주고 다음 ..
17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 궁수 3명을 배치시키는 경우는 M개 중 3개를 순서 상관없이 뽑는 조합으로 구하면 된다. 궁수가 (5, 2)에 있을 때 공격할 수 있는 위치에 따른 거리들을 표시해 보았다. 궁수가 공격할 수 있는 거리는 궁수 위치에서부터 좌, 상, 우 방향으로 BFS 했을 때의 깊이와 같다는 것을 알 수 있다. 공격할 수 있는 적은 거리가 D 이하인 적 중에서 가장 가까운 적이고 그런 적이 여럿일 경우에는 가장 왼쪽에 있는 적을 공격해야 하므로 깊이 1부터 탐색해야 하고 방향은 왼쪽, 위쪽..
17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net 이차원 배열 arr[i][j]에서 i는 원판의 번호, j는 12시부터 시계 방향으로 돌아는 형태로 간주하였다. 1. 시계 방향이나 반시계 방향으로 K칸 회전시키는데 만약 M이 4인 원판이면 4칸 회전시키면 처음 상태로 돌아온다. M이 6인 원판은 6칸 회전 시키면 처음 상태로 돌아온다. 그러므로 불필요하게 원판을 여러 번 돌리는 경우를 막기 위해서 원판을 K%M칸 만큼 회전시키도록 한다. 한 번 회전이 끝나면 2. 각 좌표마다 상, 하, 좌, 우 ..
19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 격자 벡터엔 칸마다 냄새를 남긴 상어의 번호, 남은 시간을 저장하고 상어 벡터엔 상어 번호, x 좌표, y 좌표, 방향을 저장한다. 상어 방향 3차원 배열은 [상어 번호][방향][순위]를 인덱스로 가지고 값은 그때의 방향이다. 1. 상어 벡터를 처음부터 끝까지 돌면서 상어 방향 배열을 이용해 현재 상어의 방향일 때의 우선순위에 맞게 이동할 수 있는 빈칸을 찾는다. →이동할 수 있는 빈칸이 있다면 임시 벡터에 상어 번호,..
17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하� www.acmicpc.net 클래스를 하나 만들어 int 형 : 말의 좌표 x, y, 방향 d와 string 형 : 말이 쌓아져 있는 상태 a 의 형태로 벡터에 입력받았다. 현재 말이 현재 칸에서 현재 방향으로 이동하려고 할 때 이동하려는 칸이 1. 파란색이거나 체스판을 벗어나는 경우 방향을 반대로 바꾼 뒤 그 방향으로 이동할 때 그 칸이 파란색이거나 체스판을 벗어나는 경우는 continue로 넘겨버리고 그 외의 경우는 2, 3번의 경우를 만족하는지 계속 비교하러 간다. 2. 하얀색인 ..
17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름�� www.acmicpc.net 경계의 길이 d1과 d2의 길이가 각각 1부터 N-1까지일 때 만들 수 있는 꼭짓점 A, B, C, D를 기준으로 나누어진 1, 2, 3, 4, 5 선거구의 인구수를 구해야 한다. 한 칸을 꼭짓점 A라 할 때, 이 점을 기준으로 나머지 꼭짓점 B, C, D도 만들어 최소 한 번이라도 다섯 선거구로 나눌 수 있는 조건을 만족시키는 칸은 파란색 경계선 안의 칸들이다. 빨간색으로 표시된 칸들은 B, C, D 세 점 모두를 만들 수 없는 경우 즉, 다이아몬드 모양의 경계선..
17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 재귀 호출로 상어를 이동시켰다가 시간 초과 걸려서 수학적 계산으로 풀었다. B 상어를 예로 들어 화살표 길이 = 현재 위치에서 끝까지 갈 때 걸리는 속력 이라 할 때 속력 ≤ 화살표 길이 일 때는 현재 방향 그대로 한 번에 이동이 가능하지만 속력(5) > 화살표 길이(3) 일 때는 방향을 바꿔 왔다 갔다 해야 하므로 왕복 횟수 : (속력 - 화살표 길이) / 총 길이 왕복 후 남은 속력 : (속력 - 화살표 길이) % 총 길이 를 구해준다. 이..
16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 쉽길래 대충 짜고 제출했다가 시간 초과로 여러 번 낭패 본 쉽지 않은 문제이다. sort로 정렬하기 전에 죽은 나무를 제외시키는 것이 관건인 것 같다. 이차원 벡터를 이용하여 나무들을 저장해주었다. 봄과 여름 각 칸에 있는 모든 나무들을 검사한다. 양분을 먹을 수 있는 나무는 살 수 있으므로 큐에 나이를 넣어주고 양분을 먹지 못하는 나무는 양분이 되므로 나이/2 값을 양분 변수에 넣어준다. 현재 칸의 모든 나무들의 검사가 끝나면 죽은 나무를 걸러주..