목록Baekjoon/Gold (80)
GitHubSeob

문제 https://www.acmicpc.net/problem/11662 11662번: 민호와 강호 민호와 강호가 2차원 좌표 평면 위에 있다. 민호는 점 A(Ax, Ay)에서 점 B(Bx, By)를 향해 걸어가고 있고, 강호는 점 C(Cx, Cy)에서 점 D(Dx, Dy)를 향해 걸어가고 있다. 민호와 강호는 동시에 출발하고, 민 www.acmicpc.net 문제풀이 민호의 시작 좌표 x, y를 m_start_x, m_start_y, 도착 좌표를 m_end_x, m_end_y로 두고 강호는 m->g로 바꿔서 둔다. 삼분 탐색의 1/3 지점은 mid1로, 2/3 지점은 mid2로 둔다. 오차가 10^-6까지 허용한다고 되어있으나 100번 정도 돌리면 어느 정도는 오차가 적을 거라 생각해서 100번만 돌리..

문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제풀이 현재 위치에서 바라보는 방향 기준 왼쪽부터 반시계 방향으로 돌면서 청소할 칸을 확인한다. 청소할 칸이 있으면 청소할 칸 쪽으로 회전을 한 뒤 한 칸 이동한다. 벽이거나 청소할 칸이 없으면 다시 회전을 한다. 네 방향을 탐색했으면 90도의 회전이 총 네 번 있었으므로 방향이 처음 방에 들어온 상태로 된다. 뒷 칸이 벽이면 작동을 멈춘다. 뒷 칸이 벽이 아니면 뒤로 한 칸 이동한다. ..

문제 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 문제풀이 빙산의 높이를 입력받고 0이 아닌 높이를 입력받을 때 queue에 push 한다. 큐가 빌 때까지(큐가 비면 빙산이 모두 녹은 상태를 의미한다) 돌면서 1년이 지나면 따로 저장한 벡터를 빼어 남은 빙산의 상태를 갱신한다, 그리고 빙산 덩어리가 몇 덩어린지 확인을 하고 빙산 덩어리가 2개 이상이면 종료한다. 2개 이상이 아니면 인접한 부분 중 빙산이 없는 곳이 몇 개인지 세어 따..

문제 https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 문제풀이 https://www.acmicpc.net/problem/1967 1967번 문제도 트리와 지름을 구하는 문제이다. 정점의 최대 개수가 적기 때문에 안 풀었다면 먼저 푸는 것을 추천한다. https://githubseob.tistory.com/27 [C++] 백준 / 1967 / 트리의 지름 문제 https://www.acmicpc.net/problem/1967 19..

문제 https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 문제풀이 트리의 지름을 쉽게 구하는 공식이 있다는 것을 모르는 상태로 단순하게 DFS를 하여 지름을 구하는 방법을 썼다. 노드의 개수가 더 많았으면 시간 초과로 틀릴 알고리즘이다. vectortree[10001]; vectorvisit; int max_dist; tree의 형태는 이런 식이다. for (y = 1; y > current_nod..

문제 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제풀이 가장 긴 증가하는 부분 수열 다른 문제부터 풀면 편하다 해당 문제: https://www.acmicpc.net/problem/11053 해당 문제풀이: https://githubseob.tistory.com/17 현재 숫자가 n일 때 1부터 n-1까지 돌면서 최장 길이를 찾고 DP[n][0]에, n을 ..

문제 https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N 과 건물간의 건설순서규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 문제풀이 vectororder; vectorfoundation; vectoranswer; vectorbuilding_time; vectorvisit; int goal; order벡터는 입력을 받는 벡터이다. 숫자 2개를 입력받으면 order[y][x] 형태인데 y건물을 지으면 x 건물을 지을 수 있다는 의미이다. foundation[y][x]벡터는 x건물을 지어야 y건물을 지을 수 있다..

문제 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 문제풀이 처음에 DFS로 풀었는데 계속 시간 초과가 뜨길래 질문을 보니 가중치 없는 최단거리는 BFS로 풀어야 된다는 글을 봤다. https://www.acmicpc.net/board/view/27386 그래서 코드를 지우고 다시 BFS로 풀었다. 다음 칸을 갈 때 방문했으면 현재 거리가 최단거리일 때만 다음칸으로 이동하고, 방문을 하지 않은 칸이라면 방문을 하게 했..