일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이분 탐색
- 큐
- 링크드리스트
- SSAFY
- BeautifulSoup
- 비트마스크
- 피보나치 수
- MST
- 크루스칼
- 스택
- lis
- 중복 순열
- 세그먼트 트리
- dfs
- 그리디
- Knapsack
- BFS
- 우선순위 큐
- 메모리풀
- 클래스
- 시뮬레이션
- 재귀
- DP
- 조합
- 백트래킹
- 분할 정복
- 순열
- 문자열
- 빠른 입출력
- 완전 탐색
- Today
- Total
목록시뮬레이션 (17)
작심 24/7
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dx6TZV/btqFNFaXPRv/BwKbfl70zkK9CZlKzObqXk/img.png)
5373번: 큐빙 문제 루빅스 큐브는 삼차원 퍼즐이다. 보통 루빅스 큐브는 3×3×3개의 작은 정육면체로 이루어져 있다. 퍼즐을 풀려면 각 면에 있는 아홉 개의 작은 정육면체의 색이 동일해야 한다. 큐브는 각 면 www.acmicpc.net 내가 지금 시뮬레이션을 구현하고 있는 건지 노가다를 하고 있는 건지 잠시 현타(?) 왔던 문제이다. 그림처럼 한 면을 돌리면 그 면과 인접한 옆 면들도 돌려지기 때문에 돌리는 면과 옆 면 이 두 가지 경우로 나누어서 계산해주어야 한다. 돌리는 면에 따라 돌려져야 하는 칸들을 시계 방향으로 전개도에 표시해보았다. 1. 윗 면 (U) 2. 아랫 면 (D) 3. 앞 면 (F) 4. 뒷 면 (B) 5. 왼쪽 면 (L) 6. 오른쪽 면 (R) 기본 형태 : 1 → 2 → 3 ..
16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가�� www.acmicpc.net BFS를 이용하여 상어 크기와 같은 물고기가 있거나 빈칸인 공간으로 이동하면서 상어 크기보다 작은 물고기를 발견하면 우선순위 큐에 BFS의 깊이(걸린 시간), x좌표, y좌표를 넣어준다. 탐색을 다 마치고 돌아와 우선순위 큐가 비어있으면 먹을 수 있는 물고기가 없는 것이므로 종료 후 최종 시간 출력, 비어있지 않으면 큐 안에서 1. 깊이(걸린 시간)가 가장 작은 순서대로 2. x좌표가 가장 위에 있는 순서대로 3. y좌표가 가장 왼쪽에 있는 순서대로 오..
12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 블록을 옮기는 방향에 따라 다르게 검사하며 1. 위로 옮길 때 -> 각 열 위에서부터 검사 2. 아래로 옮길 때 -> 각 열 아래에서부터 검사 3. 왼쪽으로 옮길 때 -> 각 행 왼쪽에서부터 검사 4. 오른쪽으로 옮길 때 -> 각 행 오른쪽에서부터 검사 같은 숫자가 연속해서 나오면 (빈칸 무시) 그 두 숫자를 더한 값을 큐에 넣고 같은 숫자가 연속하지 않을 때는 그 숫자만 큐에 넣는다. 한 줄의 검사가 끝나면 큐에 있는 숫자를 보드판에..
13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net ▷다른 방식 풀이 보러가기 상, 하, 좌, 우 방향으로 굴리면서 DFS 한다. 빨간 구슬과 파란 구슬이 일직선 상에 있을 경우 order 함수를 통해서 어느 구슬 먼저 굴려야 할지 판단해준 뒤 그 순서에 따라서 다음 경우에 맞게 처리해준다. 1. 빨간 구슬이 구멍에 들어가건 안 들어가건 상관없이 파란 구슬이 구멍 안으로 들어가는 경우 -> 실패이므로 구슬들의 위치만 원 상태로 복귀 후 다음 방향으로 넘어감(cont..
3425번: 고스택 문제 고창영은 스택을 조금 변형해서 고스택을 만들었다. 고스택은 숫자만을 저장할 수 있고, 다음과 같은 10가지 연산을 수행할 수 있다. 편의상 스택의 가장 위에 저장된 수를 첫 번째 수라고 � www.acmicpc.net 구현이 귀찮았던 시뮬레이션 문제이다. 들어오는 명령어들을 저장한 후 입력 조건 중에 "명령어가 100,000개를 넘어가는 경우와 스택이 수행될 때, 1,000개 이상의 숫자를 저장하는 경우는 없다." 라는 구문이 있는데 명령어의 개수가 10만 개를 넘지 않는다는 말이었으나 '명령어 개수가 10만개를 넘어갈 때 저장되는 숫자가 1000개를 넘지 않지만 명령어의 개수는 10만개 이상일 수 있다' 라고 이해하고 최대 크기를 모르니 배열은 쓰지 못하겠다고 생각하여 각 명령..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cCKXTy/btqFiPrtAmW/iitSDC32vgoCeEgSUzgxIK/img.png)
15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커� www.acmicpc.net 문제에 나와 있는 예제인 (0, 0)에서 시작하는 0방향 0세대 드래곤 커브가 3세대까지 그려지는 과정은 끝점(1, 0)을 향해 0방향(오른쪽)을 가리키는 모양이다. 다음 세대를 위해 시작점을 가리키는 방향으로 뒤집어주면 2방향(왼쪽)을 가리키는 모양이 된다. 0세대 끝점 : (1, 0) 방향 : 2← 0세대의 끝점(1, 0)을 기준(고정)으로 시계 방향으로 90도 회전한 모양이다. 1세대의 끝점은 (1, -1)이 되고 다음 세대를 위..
14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 � www.acmicpc.net 구현이 귀찮은 시뮬레이션 문제이다. 회전해야 하는 톱니바퀴를 먼저 체크해준 후 회전시키는 것이 포인트 네 개의 톱니바퀴를 모두 돌린다고 가정할 때 1. 시계 방향, 반시계 방향, 시계 방향, 반시계 방향 2. 반시계 방향, 시계 방향, 반시계 방향, 시계 방향 이렇게 두 가지 경우가 나온다. 이것을 이차원 배열 order에 저장해준 뒤 톱니바퀴의 번호와 방향을 입력받으면 1번 경우인지 2번 경우인지 판단해준 다음 번호에 따라서 바퀴가 돌아가는 순서대로 e..
14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 단순한 DFS 문제인 줄 알고 대충 읽고 짜다가 갈아엎었다. 시뮬레이션 문제이므로 작동 순서를 잘 읽고 구현해야 한다. 1. 현재 방향에서 왼쪽 방향으로 일단 회전하고 그 방향의 공간이 비어있는지 확인한다. 2. 청소하지 않은 빈 공간이라면 -> 전진한다. (재귀) 벽이거나 청소를 한 공간이라면 -> 왼쪽 방향으로 한 번 더 회전한다. 3. 왼쪽 방향으로 총 네 번 회전하며 확인했는데도 빈 공간이 없을 경우 현재 방향은 그대로 뒤로 후진한다. 4. 후진할 공간이..