목록삼성 (6)
거의 알고리즘 일기장
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를 기준으로 left, right, up, down을 채울수 있는 함수 4개를 만든다. (밑의 코드참조) void f..
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이방법 이 문제도 그냥 시뮬레이션 문제다. 그러므로 주의사항을 보고 꼼꼼히만 코딩을 완성하기만 하면 어렵지않다. 한가지만 주의하자 1. 이미 돌렸던 기어는 다시 돌리면 안된다. 재귀문을 짤때 이 부분을 넣어주지 않으면 재귀문이 끝나지 않을 수 있다. 전체코드 #include #include #include #include using namespace std; int Gears[4][8]; v..
https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이방법 1. 1 방향으로 한번, 2 방향으로 한번 완전탐색을 돌린다. 2. 탐색하며 바꿔야 할것 2.1 옆에 값과 현재 값이 같을때 -> 그냥 통과 2.2 옆에 값과 현재 값이 다를때 2.2.1 옆에 값과 현재 값의 차이가 1이하일때 2.2.1.1 현재 값 > 옆의 값 2.2.1.1.1 visited 에 걸릴때 -> 이 줄은 안됨 2.2.1.1.2 안걸릴때 2.2.1.2 현재 값 < 옆의 값 ...위와 동일 2.2.2..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 풀이방법 이 문제도 조합을 이용하면 매우매우 간단하다. 1. 조합을 이용해서 팀1, 팀2로 나눈다 2. 나눈 팀의 스코어를 계산한다. 3. 절대값(팀1 -팀2)과 저장된 값과 최솟값을 비교한다. 4. 모든 조합이 나올때까지 반복 (만약 지금 저장된 값이 0이면 0보다 최솟값은 없으므로 break해도됨) #include #include #include #define LIMIT 987654321 using namespac..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱셈(×)의 개수, 나눗셈(÷)의 개수이다. www.acmicpc.net 주의할점 1. 식의 계산은 연산자 우선 순위를 무시하고 앞에서부터 진행해야 한다. 2. 나눗셈은 정수 나눗셈으로 몫만 취한다. 풀이방법 c++을 이용한다면 next_permutation함수를 쓰면 간단하다. 나는 c++을 사용하므로 이 방법에 대해서 설명하겠다. 1. 덧셈(0), 뺄셈(1), 곱셈(..
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net 풀이방법 그냥 주어진 이 조건들을 만족하는 dfs를 만들면된다. 1. 현재 위치를 청소한다. 2. 현재 위치에서 현재 방향을 기준..