본문 바로가기

백준/수학8

백준 2389 c++ "세상의 중심에서..." -PlusUltraCode- https://www.acmicpc.net/problem/2389 [필자 사고]이 문제는 최소외접원 알고리즘을 이용하여 푸는 문제이다.c++에서는 두점사이 거리를 구하는 공식을 hypot() 함수로 제공해서 쉽게 풀 수 있다.최소외접원을 간단하게 말하자면 모든 점을 포함하는 최소크기의 원을 말한다.필자는 30000번의 수행을 거치고 매 수행마다 ratio를 0.994씩 곱해줘서 조금씩 x와 y좌표를이동하는 식으로 문제를 해결했다.[코드 해설]2. 입력 처리먼저 점의 개수를 입력받습니다.각 점의 (x, y) 좌표를 입력받아 두 개의 리스트(벡터)에 저장합니다.하나는 x좌표, 다른 하나는 y좌표를 저장합니다.3. 초기화초기 중심점 계산:입력된 점들의 x좌표와 y좌표의 평균값을 계산하여 초기 중심점을 설정합니.. 2025. 1. 20.
백준 2626 c++ "헬기착륙장" -PlusUltraCode- https://www.acmicpc.net/problem/2626 [필자 사고]이 문제는 최소외접원 알고리즘을 이용하여 푸는 문제이다.c++에서는 두점사이 거리를 구하는 공식을 hypot() 함수로 제공해서 쉽게 풀 수 있다.최소외접원을 간단하게 말하자면 모든 점을 포함하는 최소크기의 원을 말한다.필자는 30000번의 수행을 거치고 매 수행마다 ratio를 0.994씩 곱해줘서 조금씩 x와 y좌표를이동하는 식으로 문제를 해결했다.[코드 해설]1. 입력 처리프로그램은 다음과 같은 데이터를 입력받습니다:N: 점의 개수.a, b: 각각 x좌표와 y좌표를 저장하는 벡터.처리 과정:사용자로부터 점의 개수 N을 입력받습니다.이어서 각 점의 (x, y) 좌표를 입력받아 벡터 a와 b에 저장합니다.cpp복사편집cin .. 2025. 1. 20.
백준 11440 c++ "피보나치 수의 제곱의 합" -PlusUltraCode- https://www.acmicpc.net/problem/11440[필자 사고]처음으로 만난 행렬을 이용하여 수식을 계산하는 문제를 만났다. 익숙하지가 않아서 개념을 잘 숙지 하고 문제를 봐야겠다.[코드 해설] 행렬을 이용한 피보나치 수열 계산이 코드는 행렬 거듭제곱을 사용하여 피보나치 수열을 효율적으로 계산합니다.피보나치 수열은 다음과 같은 행렬식을 통해 계산될 수 있습니다: Base Matrix=[1110]\text{Base Matrix} = \begin{bmatrix} 1 & 1 \\ 1 & 0 \end{bmatrix}Base Matrix=[11​10​] 이 행렬을 제곱하여 원하는 인덱스의 피보나치 수를 빠르게 구할 수 있습니다.multiplyMatrices 함수이 함수는 두 행렬의 곱셈을 수행합니.. 2025. 1. 15.
백준 1016 c++ "제곱 ㄴㄴ 수" -PlusUltraCode- https://www.acmicpc.net/problem/1016 [필자 사고]이 문제는 에스트라 채를 알고 있냐 없냐 묻는 문제이다.그리고 중요한 점은 시작 위치를 정하는 startIdx를 구하는 방법인데 필자는 다음과 같이 구했다.(minNum+square-1)%square*square 방식을 startIdx를 구하고startIdx의 실제 배열의 위치를 구하기 위해startIdx - minNum 을 하게 되면 배열 압축을 할 수 있게 된다.이 정도만 조심하면 문제를 해결할 수 있다.[코듷 해설] 입력 받기:minNum과 maxNum 값을 입력받아 분석할 범위를 설정합니다.에라토스테네스의 체 변형:isPrime 벡터를 [minNum,maxNum][minNum, maxNum][minNum,maxNum] .. 2025. 1. 14.