본문 바로가기

BOJ/C++

(202)
[BOJ] 17140. 이차원 배열과 연산 [문제] 크기가 3×3인 배열 A가 있다. 1초가 지날때마다 배열에 연산이 적용된다. R 연산: 배열 A의 모든 행에 대해서 정렬을 수행한다. 행의 개수 ≥ 열의 개수인 경우에 적용된다. C 연산: 배열 A의 모든 열에 대해서 정렬을 수행한다. 행의 개수 열 연산 / c연산 = 열 -> 행연산 2) 우선순위큐를 사용하여 등장횟수가 적은 순으로 정렬하여 배열에 저장할 수 있도록 한다. 우선순위큐는 디폴트로 max_heap으로 되어있어서 계산한 대로 배열에 넣을 경우 순서가 거꾸로 출력된다. 그래서 greater 을 명시해서 min_heap으로 바꿔준다. 3) numCnt 배열 1부터 100까지의 숫자 중 등장한 횟수를 저장한다. (연산이 바뀔 때마다 초기화 해야한다.) 4) 연산을 진행한 시간이 100시간..
[BOJ] 17142. 연구소3 [문제] https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시에 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 연구소는 크기가 N×N인 정사각형으로 나타낼 수 있으며, 정사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 www.acmicpc.net [풀이] 17142 맞았습니다!! 2008KB 16ms C++14 / 수정 2290 10분 전 1) 바이러스 후보군 (2)..
[BOJ] 15683. 감시 [문제] https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감시할 수 있는 방법은 다음과 같다. 1번 CCTV는 한 쪽 방향만 감시할 수 있다. 2번과 3번은 두 방향을 감시할 수 있는데, 2번은 감시하는 방향이 서로 반대방향이어야 하고, 3번은 직각 방향이어야 한다. 4번은 세 방향, 5번은 네 방향을 감시할 www.acmicpc.net [풀이] 1) cctv가 한번에 탐색할 수 있는 방향은 정해져 있다. 1번 - 1 2번 - 2 3번 - 2 4번 - 3 5번 - ..
[BOJ] 14891. 톱니바퀴 [문제] https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 시계방향 순서대로 주어진다. N극은 0, S극은 1로 나타나있다. 다섯째 줄에는 회전 횟수 K(1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 회전시킨 방법이 순서대로 주어진다. 각 방법은 두 개의 정수로 이루어져 있고, 첫 번째 정수는 회전시킨 톱니바퀴 www.acmicpc.net [풀이] 14891 맞았습니다!! 2176KB 0ms C++14 / 수정 1864B 1일 전 이 문제와 같습니다. 2019/..
[BOJ] 14890. 경사로 [문제] https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net [풀이] 1) 현재 칸과 다음 칸이 다를 때와 같을 때로 나뉜다. 2) 행과 열을 모두 탐색할 때 단순하게 모두 행으로 붙여준다. map[n*2][n] 3) 나올 수 있는 모든 경우의 수 (n*2)를 초기값으로 두고 경사로를 설치할 수 없는 경우이거나 높이의 차가 1이상인 경우를 제거해간다. 4) 행의 수만큼 (n*2)만큼 반복하면서 길을 찾는다. 5) 먼저 최고 높이가 10이하이므로 height 배열을 11의..
[BOJ] 14500. 테트로미노 [문제] https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net [풀이] 14500 맞았습니다!! 3212 kb 252 ms C++14 / 수정 1593B 1일 전 1) 좌표를 상하좌우로..
[BOJ] 14499. 주사위굴리기 [문제] https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net [풀이] 14499 맞았습니다!! 1992 KB 0 ms C++14 / 수정 1658 B 1일 전 1) 주사위가 상하좌..
[BOJ] 12100. 2048(easy) [문제] https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net [풀이] 12100 맞았습니다!! 1988 8 C++14 / 수정 2184 2일 전 1) 인덱스에 주의를 기울여야 한다. 2) 상하 / 좌우를 모두 왼-> 오른쪽으로 이동하도록 만들어야 한다. (이동을 쉽게 하기 위해) 2 2 2 4 4 4 8 8 8 상하 2 4 8 2..