본문 바로가기

Programming456

[C/C++] 프로젝트 오일러 #83 Path sum: four ways(다익스트라) #83 문제는 난이도 25%로 설정되어 있습니다. 동적 계획법 등으로는 구현하기 어렵고, 다익스트라 알고리즘을 사용해야 합니다. 다익스트라 알고리즘 자체는 너비 우선 탐색, 프림 알고리즘과 비슷한 구현 방법으로 큐 자료구조와 우선순위 큐 자료구조의 이해가 필요합니다. https://projecteuler.net/problem=83 다익스트라 알고리즘 구현은 그래프에서 경로 찾기에서 자주 나옵니다. https://sdev.tistory.com/119 다익스트라 알고리즘 다익스트라 알고리즘은 시작점에서 다른 모든 경로로 가는 최단 거리에 대한 그래프(트리)를 만들어줍니다. 다익스트라 알고리즘을 사용하려면, 힙을 이용해서 최소의 엔티티를 찾는 것이 필요 sdev.tistory.com https://sdev.t.. 2023. 5. 6.
[C/C++] 백준 #2448 별 찍기 - 11(재귀 함수) #2447 문제와 같이 이번 문제도 재귀 함수를 이용한 별찍기입니다. 문제는 프랙탈에서 자주 나오는 사이펀스키 삼각형(Sierpiński triangle)을 찍는 것입니다. https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net #2447 문제와 마찬가지로 캔버스를 만들고 재귀 함수를 이용하여 풀었습니다. //------------------------------------------------ // baekjoon #2448 - Printing Stars - 11 // - by Aubrey Choi /.. 2023. 5. 6.
[C/C++] 백준 #2447 별 찍기 - 10(재귀 함수) 별찍기 프로그램을 작성하는 프로그래밍 언어를 배울 때, 초기에 자주 나오는 문제입니다. 일반적으로 직각삼각형, 이등변삼각형을 많이 찍습니다. 이 문제들은 피라미드 찍기라는 이름으로도 많이 나옵니다. 조금 더 가면 다이아몬드 형태도 찍을 수 있게 됩니다. 일반적인 별 찍기 문제는 난이도면에서 상당히 낮습니다. 이번 문제는 난이도가 높은 별 찍기에 속합니다. 단순한 반복문 중복으로는 해결하기 어렵습니다. https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별.. 2023. 5. 6.
[C/C++] 백준 #2437 저울(탐욕 알고리즘) 이번 문제는 탐욕 알고리즘을 이용하여 풀면 됩니다. https://www.acmicpc.net/problem/2437 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net 우리에게는 천칭저울로 알려진 무게를 재는 도구입니다. 한쪽에는 무게를 알고지 하는 물체를 다른 한쪽에는 추를 놓음으로써 평형을 이루는 지점을 찾아서 물체의 무게를 알 수 있습니다. 저울추가 N 종류 주어지면, 우리는 이 저울추 N개를 가지고 만들 수 있는 숫자들을 생각하면 됩니다. 어떻게 보면 코인 문제와 비슷한데, 코인 문제는 경우의 수를 따지지만, 여기.. 2023. 5. 2.
[C/C++] 백준 #2436 공약수(수학) 보통 두 수가 주어지면, 최대공약수와 최소공배수를 구하는 것을 하지만, 이 문제는 최대공약수와 최소공배수가 주어지면, 그러한 최대공약수와 최소공배수를 가지는 두 수를 구하는 문제입니다. https://www.acmicpc.net/problem/2436 2436번: 공약수 첫째 줄에 두 개의 자연수가 빈칸을 사이에 두고 주어진다. 첫 번째 수는 어떤 두 개의 자연수의 최대공약수이고, 두 번째 수는 그 자연수들의 최소공배수이다. 입력되는 두 자연수는 2 이상 100,0 www.acmicpc.net 두 수 \(a, ~ b\)가 주어지면, 두 수의 최대 공약수가 \(g\)일 때, 우리는 다음과 같은 식을 얻을 수 있습니다. \[ a = ga', ~ b = gb', ~ lcm = ga' b' \] 최소공배수를 최.. 2023. 5. 2.
[C/C++] 백준 #2417 정수 제곱근(수학) #2417 문제는 Silver 4로 등급이 설정되어 있지만, 그보다는 더 쉬운 문제로 보입니다. https://www.acmicpc.net/problem/2417 2417번: 정수 제곱근 정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오. www.acmicpc.net 제 경우에는 sqrt() 함수를 이용해서 제곱근을 구하고, 제곱근 정수부터 하나씩 올려가면서 제곱한 결과가 n 이상이 되면, 그 값을 출력했습니다. 딱히 알고리즘이라고 할 것은 없습니다. 제가 작성한 소스입니다. //------------------------------------------------ // baekjoon #2417 // - by Aubrey Choi // - created at 2019-11-11 //.. 2023. 4. 30.