분류 전체보기
-
면적 넓이 구하기Algorithm with C/Math 2020. 9. 9. 18:59
1. 문제 암소가 필드에서 풀을 먹고 있다. 필드에 있는 로프는 두 개의 지주에 묶여 있고, 암소는 링으로 로프에 묶여 있다. 그래서 암소는 로프의 어떤 지점으로도 이동이 가능하다. 당신의 일은 암소가 가서 풀을 먹을 수 있는 필드의 면적을 구하는 것이다. [그림 ] 로프의 두께는 없고, 암소는 포인트 물체이고 링의 반지름과 지주의 두께는 무시할 수 있다. pi = 2 * arccos(0) 로 계산하고 ( 각은 라디언 ) double 형을 사용하라. 입력 각 줄에는 두 정수 D ( 0
-
Mixing MilkAlgorithm with C/Greedy 2020. 9. 9. 18:38
1. 문제 2. 문제 분석 및 필요한 자료구조 정의 문제에서 나타났다시피, 상인이 가지고 있어야할 것은 1리터당 가격과 상인이 가진 우유량이다. 이를 구조체 변수로 두자. 그리고 문제에서, 상인의 수를 유저가 직접적으로 입력을 받으므로, 동적할당을 이용한다. 그리고, 상인 배열에서 우유값이 가진 작은 순서대로 정렬을 할 것이므로 정렬 알고리즘이 하나 필요한데, 퀵정렬을 이용할 것이다. 퀵 정렬은 자료구조에서 한 내용을 그대로 가지고 오는데, 약간의 변경 사항이 있는데 이는 상인 구조체 변수의 Price가 작은 순으로 정렬한다. 퀵 정렬에 필요한 함수들은 MySort헤더 파일과 소스 파일에[ 정의한다. 3. 구현 프로그램 실행결과 4. 헤더 파일 & 소스 파일
-
마족 찾기Algorithm with C/BFS 2020. 9. 9. 11:37
1. 문제 문제는 아래의 링크에 있다. designatedroom87.tistory.com/96?category=881035 마족 찾기 1. 문제 2. 문제 분석 이 문제는 BFS방식으로 접근하는 것이 올바르다. 주민의 수가 너무 많아지면, DFS방식에서는 stack overflow가 나타나기 때문이다. 그러나, 여기서는 DFS방식으로도 접근을 해볼것� designatedroom87.tistory.com 2. 구현 앞에서 구현한 SetHumanDataByDFS함수에서 함수이름을 SetHumanDataByBFS로 변경만 했다. 나머지는 앞의 내용과 모두 같다. 다만 앞에서 구현한 자료구조 큐를 가지고 와서 구현한다. 프로그램 실행결과 data.txt 파일 일부분 3. 헤더파일 & 소스 파일
-
마족 찾기Algorithm with C/DFS 2020. 9. 9. 11:34
1. 문제 2. 문제 분석 이 문제는 BFS방식으로 접근하는 것이 올바르다. 주민의 수가 너무 많아지면, DFS방식에서는 stack overflow가 나타나기 때문이다. 그러나, 여기서는 DFS방식으로도 접근을 해볼것이다. 아래의 구현에서는 Res배열을 하나 선언할 것인데, 선언하는 이유는 아래와 같다. 마을 주민이 3사람이 있다고 하자. (1,2,3 이라고 칭하겠다.) 주민 1번이 마을 주민 2,3,4 번을 지목했다고 하자. 그러면 지목을 받은 주민 2번 주민이 지목을 한다. 3.4.5번 주민을 지목한다고 하자. 그리고, 3번 주민이 지목을 한다. 3번 주민이 2,4,5번을 지목했다고 했을 때, 이미 주민2번이 주민3번을 지목했고, 다시 3번 주민이 2번 주민을 지목한 상황이 되었다. 즉, 위와 같은 ..
-
통신 연구소Algorithm with C/ETC 2020. 9. 9. 00:07
1. 문제 N사 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여, 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다. 예를 들어, 높이가 6,9,5,7,4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향( 왼쪽 방향 )으로 동시에 레이저 신호를 발사한다고 하자. 그러면 ㉠..
-
Catalan NumberAlgorithm with C/ETC 2020. 9. 8. 23:47
1. 문제 1부터 n 까지의 정수가 차례로 스택에 push 된다. push 가 이루어지는 중간에, 또는 모든 숫자들이 push된 이 후에 언제든지 임의로 숫자들을 pop 할 수 있다. 이렇게 pop 된 숫자들을 차례로 나열한 수열을 catalan number 라 한다. 예를 들어, n이 4 라면 1,2,3,4 가 차례로 push 된다. 1,2,3,4 모두 push 된 뒤, 네 번 pop 하면 4,3,2,1 이라는 수열이 만들어 진다. 반면에 1,2 가 push 된 뒤, 두 번 pop을 하고, 나머지 3,4 가 push 된 뒤 또 두 번 pop을 하면 2,1,4,3 이라는 수열이 만들어 진다. 따라서, 앞서 말한 대로 4,3,2,1 과 2,1,4,3 은 둘 다 catalan number 이다. 하지만 ..
-
Self-numberAlgorithm with C/ETC 2020. 9. 7. 12:04
1. 문제 2. 문제 분석 위에서 셀프넘버를 구해야 한다고 했다. 그런데 문제의 예시에서 나왔다시피, 숫자 91과 100의 제네레이터는 101로 서로 같다. 위의 에시에서 보다시피, 중복되는 제네레이터를 기록해야 한다. 즉, 메모이제이션 기법을 써야하며, 배열로 두자. 그리고, 배열의 인덱스를 어떤 용도로 쓰냐면, 해당 정수의 제네레이터로 쓰자. 문제 풀이 방법은 2가지가 있는데, 둘 다 메모이제이션 기법을 쓰며, 해당정수의 각 자리수를 얻어내는 방법은 동일하다. 해당 정수의 각 자리수를 얻어내는 방법은 while문을 이용해서 10으로 나눈 나머지와 몫을 이용하면 쉽게 알 수 있다. 3. 자료 구조 정의 Array배열은 기록을 위한 배열이다. 즉, 중복을 막기위함이다. 배열의 길이가 왜이렇게 크냐라는 질..
-
BridgeAlgorithm with C/ETC 2020. 9. 7. 11:33
1. 문제 절대반지를 얻기 위하여 반지원정대가 출발한다. 원정대가 지나가야할 다리는 두 개의 인접한 돌다리로 구성되어 있다. 하나는 이고, 다른 하나는 이다. 아래 [그림 1]은 길이가 6인 다리의 한 가지 모습을 보여준다. 그림에서 위의 가로줄은 를 표시하는 것이고, 아래의 가로줄은 를 표시한다. 두 돌다리의 길이는 항상 동일하며, 각 칸의 문자는 해당 돌에 새겨진 문자를 나타낸다. 두 다리에 새겨진 각 문자는 { R, I, N, G, S } 중 하나이다. [그림 1] 반지원정대가 소유하고 있는 마법의 두루마리에는 와 를 건너갈 때 반드시 순서대로 밟고 지나가야할 문자들이 적혀있다. 이 순서대로 지나가지 않으면 돌다리는 무너져, 반지원정대는 화산 속으로 떨어지게 된다. 다리를 건널 때, 다음의 제한조건..