본문 바로가기
728x90

분류 전체보기255

15685 드래곤 커브 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커� www.acmicpc.net (풀이) 규칙을 찾는것이 가장 중요하다. 만약 0세대가 0부터라면 1세대는 0,1 2세대는 0,1,2,1 3세대는 0,1,2,1,2,3,2,1 이전 세대의 끝에서부터 처음 인덱스까지 반대숫자를 하나 더해주며 나열해주면 된다. (역순 +1 ) 3이 넘어가면 1이 되므로 모듈 연산자를 통해 보정을 해주었다. #include #include #include using nam.. 2020. 8. 7.
17140 이차원 배열과 연산 https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net (풀이) (풀이) 문제의 조건 R연산 , C연산 R연산 행의 개수 >= 열의 개수 C연산 행의 개수 < 열의 개수 풀이 순서 1. 이 문제의 모든 입력값은 3x3 행렬로 시작한다. 2. 가장 먼저 R,C연산에 대해 행 또는 열 정렬을 한다. 3. 행 또는 열에서 (원소수, 횟수)가 몇번 나왔는지 검사한다. 4. 3번에서 원소수, 횟수에 대해 정보를 가지고 있는 vector에 대해 정렬.. 2020. 8. 7.
TCP 와 UDP TCP(Transmission Control Protocol) TCP는 전송 제어 프로토콜(Transmission Control Protocol)의 약자이다. OSI계층에서 4 계층인 전송 계층(Transport Layer)에 속하며, 아래 그림에서 보이듯 Network 계층 위에서 동작하는 프로토콜인것을 알 수 있다. TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에 묶어서 TCP/IP로 부르기도 한다. 또한, TCP는 웹 브라우저들이 WWW(World Wide Web) 에서 서버에 연결할때 사용되며, 이메일 전송이나 파일 전송에서도 사용된다. TCP는 다음과 같은 특징이 있습니다. 1. TCP 특징 (1)연결형 서비스 1) 연결을 위해 할당되는 논리적인 경로가 있습.. 2020. 7. 31.
17142 연구소3 https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net (풀이) 연구소2 문제와 유사하지만, 비활성화된 바이러스로 반례가 존재한다. 기존과 같은 풀이방식의 Depth로는 아래의 반례 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 0 0 2 0 1 1 1 1 1 를 통과하기 어렵다. 따라서 0의 갯수를 카운트하여 확산이 가능한 부분에 대해서 확산 갯수와 0의 갯수가 같아지는 시점에 전부 확산 되었다고 판단. #include #include #i.. 2020. 7. 30.
17141 연구소2 https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이�� www.acmicpc.net (풀이) 바이러스를 퍼트릴 수 있는 특정 지점들에서 바이러스가 퍼지는 최단시간을 구하는문제. 바이러스를 놓을 수 있는 공간 E개라고한다면 M개를 살포할 수있으므로 (1> arr[i][j]; if(arr[i][j]==1) check[i][j] = arr[i][j]; if (arr[i][j] == 2) virus_pos.push_back(make_pair(i, j)); } } } 2020. 7. 30.
17471 게리맨더링 https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net (풀이) 문제의 조건 1. 각 구역은 두 선거구중 하나에 포함되어야 한다. 2. 각 구역은 모두 연결되어 있어야 한다. 3. 두 구역으로 나누었을때 두 구역의 인구차의 최소값을 구하라. 문제의 첫 번째 조건을 만들기 위해 백트래킹을 이용한 조합을 사용하였다. divide_zone(int cnt, int idx, int limit) check_choice[]의 T구역은 true, F구역은 false로 구분, 두 선거구중.. 2020. 7. 27.
16988 Baaaaaaaaaduk2 (Easy) https://www.acmicpc.net/problem/16988 16988번: Baaaaaaaaaduk2 (Easy) 서기 2116년, 인간은 더 이상 AI의 상대가 되지 못하게 되었다. 근력, 순발력, 창의력, 사고력, 문제해결능력, 심지어 인간미조차 AI가 인간을 앞선다. AI가 온 지구를 관리하며 이미 인류는 지구의 www.acmicpc.net (풀이) 이 문제는 빈 칸에 자신의 돌을 2개 두고 상대방의 돌을 최대 몇개 잡을 수 있는지 묻는 문제이다. 자신의 돌을 2개 선택 하는 경우의 수를 먼저 찾아준다. (빈 칸의 갯수) Combination 2 조합을 이용하여 모든 경우의 수를 다 찾아준다. 그리고 해당 각 경우의 수 마다 흰색돌을 DFS 또는 BFS로 순회하여 빈칸이 존재하는지 여부를 파.. 2020. 7. 25.
16985 Maaaaaaaaaze https://www.acmicpc.net/problem/16985 16985번: Maaaaaaaaaze 첫째 줄부터 25줄에 걸쳐 판이 주어진다. 각 판은 5줄에 걸쳐 주어지며 각 줄에는 5개의 숫자가 빈칸을 사이에 두고 주어진다. 0은 참가자가 들어갈 수 없는 칸, 1은 참가자가 들어갈 수 있는 칸을 www.acmicpc.net (풀이) 이 문제는 바둑이와 난이도는 같지만, 경우의수가 하나 더 추가되어 구현이 복잡하다. 문제의 요구조건은 5x5x5 3차원 배열의 각 층을 무작위로 선택하여 선택한 층들을 다시 무작위로 회전시켯을때 미로를 탈출할 수 있는 가장 최소거리를 구하는 문제이다. 이 문제를 층을 나누는방식과, 회전시키는 부분을 분리해보면 무작위로 층을 선택하는 경우의 수는 5!이 나온다. 각 층.. 2020. 7. 25.
15686 치킨배달 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net (풀이) 문제의 조건에 치킨집 M의 수는 13개 보다작거나 같다. 폐업 시키지않은 치킨집 수를 최대 M개 고려했을때 치킨 거리가 가장 최소가 될때의 최소값을 찾는문제. 치킨집을 폐업 시키는 제한이 없다. 따라서 1개를 폐업시키든 2개를 폐업시키든 폐업시키지 않든 폐업 시키지 않은경우에도 최소거리를 찾을 수 있다. 도시 치킨 거리를 가장 최소로 하기 위해서 각 치킨집에서 집들과.. 2020. 7. 25.
[쓰레드 동기화] Interrupt(이벤트) 방식의 AutoResetEvent 스핀 락(Spin lock)처럼 폴링 방식의 스레드 대기는 CPU 점유율이 올라갈 수 있다. 무한정 대기상태라는 말은 계속 잠금이 풀릴때까지 확인하는 방법이다. 스레드가 무한정 대기하는 부담을 줄일 수 있는 방법이 있다. 하지만, 이것은 커널단의 호출로 문맥교환의 오버헤드가 발생된다. 더보기 마이크로 프로세서에서의 단일코어 단일 프로세스 예를 들어보면, 폴링 방식으로 어떠한 값의 state 변화를 감시하고 계속 대기 시켜놓으면 그 일만 하며 무한정 대기한다. 하지만, 내부 혹은 외부인터럽트를 사용하면, 코드를 한줄 한줄 실행 중간에 들어온 인터럽트를 확인하고, 현재 작업을 중단 시킨다. 작업을 중단시키는 것은 아얘 작업을 비우는 것이아닌 레지스터와 내부 메모리의 어떤 지점에 현재 작업정보와 다음 작업해야.. 2020. 7. 21.
728x90