acmicpc

💻 개인공부 💻/알고리즘

[acmicpc] 두더지 굴 (feat. 깊이우선탐색 알고리즘) / C++

출처 => [알고리즘 해결을 위한 창의적 알고리즘 해결 (중급)] 문제 문제 분석 문제의 의도: 단순 비선형 탐색이 아니라, 두더지 굴을 나타내는 숫자인 1을 중심으로 상,하,좌, 우에 1이 있다면 이 부분에 간선이 있는 것으로 생각한다. (0,0)에서 순차 탐색을 하여 그 값이 1이라면 그 점을 중심으로 깊이우선탐색을 하여 모든 연결된 점을 방문한다. 풀이 이런 식으로 마지막 칸까지 진행을 한다면 다음과 같은 결과가 나온다. => 따라서 각 굴의 크기는 7, 8, 9라는 사실을 알 수 있다. 소스코드 & 결과 #include #include using namespace std; int n, A[101][101], cnt, Size[101]; void input() { cin >> n; for (int ..

💻 개인공부 💻/알고리즘

[acmicpc] upper bound (feat. 이진 검색 알고리즘) / C++

출처 => [알고리즘 해결을 위한 창의적 알고리즘 해결 (중급)] 문제 문제 분석 문제의 의도 : k를 초과하는 가장 첫 번째 원소의 위치를 구하는 것 ① 먼저 구간을 설정한다. ([s, e]) ② 이 구간의 중간위치의 값을 m이라고 하면, A[m-1]k 인 최소 m을 찾아야 한다. 풀이 => 예시로 주어진 배열 A는 1,2,7,7,7,7,11,15이다. k의 값은 7이다. 따라서 출력값은 7이 나와야 한다. => 주어진 배열은 [0,8]이고 이에 따라 중간값의 위치인 m은 4이다. 우리가 원하는 것은 찾으려는 값의 위치가 아니라 k값보다 큰 수가 처음으로 등장하는 위치이다. A[4]=7이므로 우리의 위치와 일치하지 않다. => A[6]>7 이므로 그보다 아래로 범위를 설정하여 재탐색 =>A[5]=7이므..

공대생 배기웅
'acmicpc' 태그의 글 목록