본문 바로가기

백준 알고리즘(BOJ)90

백준 알고리즘 2667 (단지번호붙이기) - C++, Python [문제] 백준 알고리즘 2667 (단지번호붙이기) > https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수 www.acmicpc.net N x N 배열에 0 또는 1의 숫자가 적혀있다. 여기서, 1이 상하좌우로 붙어있는 무리의 갯수를 출력하는 문.. 2019. 10. 16.
백준 알고리즘 3053 (택시 기하학) - C++, Python [문제] 백준 알고리즘 3053 (택시 기하학) > https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 www.acmicpc.net R을 받아와서 유클리드 기하학과 택시 기하학의 원 넓이를 소수점 6자리까지 출력. .. 2019. 10. 16.
백준 알고리즘 2606 (바이러스) - C++, Python [문제] 백준 알고리즘 2606 (바이러스) > https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다. www.acmicpc.net 노드와 간선이 주어졌을 때, 완전탐색을 하라는 문제. 나는 개인적으로 DFS를 좋아해서 DFS로 진행헀다. 단순하게 갯수 카운팅만 하기보다는, 루트를 출력할 수 있게 짜고 그 루트의 길이 -1(시작하는 1 제외)를 출력해주었다. Stack과 재귀함수.. 2019. 10. 16.
백준 알고리즘 1018 (체스판 다시 칠하기) - C++, Python [문제] 백준 알고리즘 1018 (체스판 다시 칠하기) > https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net M * N의 보드에 "B" 또는 "W"가 적혀있다. 8 * 8 크기로 아무 곳이나 잘라서 체스판을 만들면 된다. 이 중에, 가장 적게 "B" 또는 "W"를 교체하도록 8 * 8을 자르고, 그 교체 수를 찾는 문제이다. 주의할 점은 체스판은 BWBW.... 경우와 WBWB.... 경우의 두 가지가 있다. for문에서 i + j번째의 .. 2019. 10. 16.
백준 알고리즘 4153 (직각삼각형) - C++, Python [문제] 백준 알고리즘 4153 (직각삼각형) > https://www.acmicpc.net/problem/4153 입력을 받아서 직각삼각형을 만드는 간단한 문제이다. 이제부터는 C++과 Python을 같이 작성하려 한다. [C++] #include #include using namespace std; int main() { while (1) { int num[3]; for (int i = 0; i > num[i]; sort(num, num + 3); if (!num[0]) break; if (num[0]*num[0] + num[1]*num[1] == num[2]*num[2]) cout 2019. 10. 16.
백준 알고리즘 1260 (DFS와 BFS) - python [문제] 백준 알고리즘 1260 (DFS와 BFS) > https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. www.acmicpc.net 노드와 간선이 주어지면, DFS와 BFS로 경로를 출력하는 문제이다. N개의 노드, M개의 간선이고, 노드 V부터 탐색을 시작한다. 예제 입력 1을 기준으로 설명하자면, N, M, V = 4, 5, 1 이면서, (1, 2) (1, .. 2019. 10. 16.
백준 알고리즘 3009 (네 번째 점) - python [문제] 백준 알고리즘 3009 (네 번째 점) > https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. 출력 직사각형의 네 번째 점의 좌표를 출력한다. 예제 입력 1 복사 30 20 10 10 10 20 예제 출력 1 복사 30 10... www.acmicpc.net 세 점이 주어지고, 직사각형을 만들기 위한 마지막 한 점을 찾는 문제이다. 직사각형 점은 x와 y로 표현하면 (x1, y1), (x1, y2), (x2, y1), (x2, y2.. 2019. 10. 16.
백준 알고리즘 7568 (덩치) - python [문제] 백준 알고리즘 7568 (덩치) >https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56,177), (45,165) 라고 한다면 A의 덩치가 B보다 큰 www.acmicpc.net 몸무게와 키가 모두 큰 경우를 기준으로 순위을 매기는 문제이다. 몸무게와 키가 모두 크진 않은 경우.. 2019. 10. 16.
백준 알고리즘 1085 (직사각형에서 탈출) - python [문제] 백준 알고리즘 1085 (직사각형에서 탈출) > https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다. www.acmicpc.net (0, 0), (w, 0), (0, h), (w, h)의 직사각형 모양 안에 있는 (x,y)에서 가장 가까운 모서리에 도달하는 최단거리를 구하는 문제이다. 고려해야할 사항은 2가지 이다. 1. (축에 가까운 모서리 또는 축에 먼 모서리) 중에서 가까운 곳으로 이동 2. (x 방향 이동 또는 y 방향 이동) 중에서 가.. 2019. 10. 16.
728x90