본문 바로가기

BOJ89

백준 알고리즘 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.
백준 알고리즘 2231 (분해합) - python [문제] 백준 알고리즘 2231 (분해합) > https://www.acmicpc.net/problem/2231 2231번: 분해합 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그 www.acmicpc.net 문제 이름은 분해합이지만, 사실 분해합의 반대 프로세스인 생성자를 구하는 문제이다. 브루트 .. 2019. 10. 16.
백준 알고리즘 9020 (골드바흐의 추측) - python [문제] 백준 알고리즘 9020 (골드바흐의 추측) > https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. www.acmicpc.net 소수 조합의 합으로 모든 짝수를 만들 수 있다는 골드바흐의 추측을 활용한 문.. 2019. 10. 16.
728x90