전체 글 187

[백준] 1436 영화감독 숌 (Python 파이썬)

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 문제 설명 666, 1666, 2666, 3666 ... 으로 수 들이 나열될 때 N번째 수는 어떤 수인지를 맞추는 문제이다. 풀이 과정 문제에서 주의해야 할 점은 6이 3번 나타나기 때문에 7번째 수는 6666이 아니라 6660이 되어야 한다. 그리고 작은 수들부터 나열을 하기 때문에 8번째 수는 7666이 아니라 6661이 될 것이다. 이러한 조건들을 위해 조건문을 나열하기에는 너무 까다롭기..

[백준] 1002 터렛 (Python 파이썬)

https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 문제 설명 두 좌표 (x1, y1)와 (x2, y2)가 주어지고, 목표점과의 거리 r1, r2가 주어질 때 목표점이 존재할 수 있는 좌표의 수를 구하는 문제이다. 풀이 과정 이 문제는 고등학교 교과과정에서 배웠던 원의 방정식 중 두 원의 교점을 활용하는 문제이다. 먼저, 원이라는 것은 하나의 정점으로부터 같은 거리를 가지는 점들의 집합이므로 정점(x1, y1)로 부터 거리 r1을 가진 점들은 원으로 존재할 것이고 정점(x2, y2)로 부터 거리 r2..

[백준] 9020 골드바흐의 추측 (Python 파이썬)

https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 문제 설명 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. ..

[백준] 4948 베르트랑 공준 (Python 파이썬)

https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 문제 설명 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개..

[백준] 1929 소수 구하기 (Python 파이썬)

https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 문제 설명 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 풀이 과정 소수란, 1과 자기자신을 제외한 나머지 수로 나누어 떨어지지 않는 수이다. 그래서 소수를 판별하는 가장 간단한 방법은 2부터 자기자신 - 1 까지 for문을 돌면서 나누어 떨어지는지 확인하는 것이다. 하지만, 모두 확인할 필요 없이 제곱근까지만 확인을 하면 된다. 그 이유는 약수들의 곱이 서로 대칭을 이루기 때문인데 예를 들어, 16이라는 수가 있..

[백준] 1978 소수 찾기 (Python 파이썬)

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 문제 설명 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 풀이 과정 소수란, 1과 자기자신을 제외한 나머지 수로 나누어 떨어지지 않는 수이다. 그래서 소수를 판별하는 가장 간단한 방법은 2부터 자기자신 - 1 까지 for문을 돌면서 나누어 떨어지는지 확인하는 것이다. 하지만, 모두 확인할 필요 없이 제곱근까지만 확인을 하면 된다. 그 이유는 약수들의 곱이 서로 대칭을 이루기 때문인데 예를 들어, 16이라는 수가 있을 때 16의 약수..

[백준] 1011 Fly me to the Alpha Centauri (Python 파이썬)

문제 설명 https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 위 링크에서 주어진 설명처럼, 시작점과 끝점이 주어질 때 공간이동 장치의 작동횟수를 구하는 문제이다. 풀이 과정 먼저, 이 문제는 규칙을 찾아 해결하는 문제이다. 규칙을 찾는 과정이 굉장히 까다로웠는데, 규칙을 찾기 위해 직접 거리 1부터 직접 테이블을 작성해보았다. 먼저 거리가 제곱수일 때를 보면 (노란 배경색), 이동 단계에 새로운 숫자가..

[백준] 2775 부녀회장이 될테야 (Python 파이썬)

문제 설명 https://www.acmicpc.net/problem/2775 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. 풀이 과정 먼저 0층 n호에는 n명이..

[백준] 10250 ACM 호텔 (Python 파이썬)

문제 설명 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 문제의 설명이 그림과 함께 길게 제공되므로 위 링크를 참조바랍니다. 풀이 과정 1203 이라는 호수가 있을 때 앞의 두자리 12를 층수, 뒤의 두자리 03을 호수라고 하자. 핵심적인 부분은 손님들을 먼저 층수를 우선순위로 채우고, 그 다음 호수를 채워나간다. 즉 하나의 열에 대해 모든 행을 채운 후에, 그 다음 열로 이동하여 모든 행을 채우는 형식이다. 그래서, n % h를..

[백준] 1991 트리 순회 (Python 파이썬)

문제 설명 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 풀이 과정 이 문제를 풀기 위해선, 전위 순회(preorder)와 중위 순회(inorder), 후위 순회(postorder)가 무엇인지에 대해 알고있어야 한다. 해당 이름들..

Algorithm/DFS & BFS 2021.10.01