본문 바로가기
반응형

티스토리챌린지18

[C/C++] 프로젝트 오일러 #96 Su Doku(백트래킹) Project Euler의 96번 문제는 스도쿠 퍼즐을 해결하는 알고리즘 설계를 다루고 있습니다. 스도쿠는 9x9 격자로 이루어진 퍼즐 게임으로, 각 행, 열, 그리고 3x3의 작은 박스에 1부터 9까지의 숫자를 중복 없이 채워 넣는 것이 목표입니다. 이 문제는 단순히 하나의 스도쿠를 푸는 것이 아니라, 여러 개의 스도쿠 퍼즐을 입력받아 각각을 해결한 뒤, 각 퍼즐의 해답에서 첫 번째 세 숫자를 추출하여 합산하는 과제를 제시하고 있습니다.프로그래머의 관점에서 이 문제를 접하면, 가장 먼저 고려해야 할 점은 스도쿠 퍼즐을 효율적으로 해결할 수 있는 알고리즘입니다. 일반적으로 사람이 스도쿠를 풀 때는 규칙을 기반으로 논리적 접근을 활용합니다. 특정 위치에 들어갈 수 있는 숫자의 후보를 좁혀가는 과정을 반복하.. 2024. 11. 18.
[C/C++] 프로젝트 오일러 #95 Amicable Chains(수학) 프로젝트 오일러 #95: Amicable Chains (우애 체인)이 문제는 숫자들 사이의 관계를 탐구하는 것으로, 특정 수의 약수의 합을 계산하여 순환하는 우애 체인(amicable chain)을 찾는 것입니다. 다음과 같은 과정을 따릅니다:1. 정의• 어떤 수 \(n\)의 약수의 합을 \(s(n)\)이라고 정의합니다. 여기서 \(s(n)\)은 \(n\) 자신을 제외한 모든 양의 약수의 합입니다.예를 들자면 \( s(12) = 1 + 2 + 3 + 4 + 6 = 16 \)으로   \( s(12) \) 값이 16이 됩니다.• 두 수 \(a\)와 \(b\)가 우애수(amicable numbers)라면 \( s(a) = b \)이고 \(  s(b) = a  \)이며  \( a \neq b \)입니다.예를 들.. 2024. 11. 17.
[C/C++] 프로젝트 오일러 #94 Almost Equilateral Triangles(수학) Project Euler #94: Almost Equilateral Triangles 문제는 “거의 정삼각형” 성질을 가진 삼각형 중에서 주어진 조건을 만족하는 삼각형의 합을 구하는 문제입니다. 정삼각형은 세 변의 길이가 모두 같은 삼각형입니다. 그러나 이 문제에서는 거의 정삼각형(Almost Equilateral Triangles)을 다룹니다. 거의 정삼각형은 다음 조건을 만족하는 삼각형입니다:1. 두 변의 길이가 같고, 나머지 한 변의 길이가 이와 1 차이가 난다.  예:  \(a, a, a+1\)  또는  \(a, a, a-1\)  형태2. 삼각형의 세 변이 정수이고, 넓이도 정수여야 한다.삼각형의 넓이 계산 (헤론의 공식)삼각형의 넓이를 구할 때는 헤론의 공식을 사용합니다.세 변이 \(a, b, .. 2024. 11. 16.
4. 파이썬을 이용한 데이터 과학 소개(part 1) 1. 데이터 과학 데이터 과학은 다양한 데이터로부터 유용한 지식과 인사이트를 도출하기 위해 데이터 처리 과정, 과학적 방법론, 알고리즘, 시스템 등을 결합하는 분야입니다. 이 과정에서는 정형, 비정형, 반정형 데이터 모두가 사용됩니다.• 정형 데이터는 표나 데이터베이스처럼 일정한 형식을 갖춘 데이터로, 예를 들어 엑셀 파일이나 관계형 데이터베이스의 자료가 포함됩니다.• 비정형 데이터는 특정한 형식 없이 인간 언어처럼 자연스럽게 표현된 데이터로, 웹 페이지나 뉴스 기사처럼 구문 분석이 필요한 데이터가 해당됩니다.• 반정형 데이터는 JSON 파일과 같이 문자열 기반으로 부분적으로 형식화된 데이터를 의미하며, 구조와 비구조적 요소가 혼재된 형태를 띱니다. 데이터 과학자는 이러한 다양한 유형의 데이터를 적절히 .. 2024. 11. 15.
[C/C++] 프로젝트 오일러 #93 Arithmetic Expressions(백트래킹) 프로젝트 오일러 문제 #93, Arithmetic Expressions는 네 개의 숫자를 이용해 가능한 모든 정수 값을 만들고, 그 중 가장 긴 연속된 정수 집합을 찾는 문제입니다. 이 문제의 목표는 네 개의 서로 다른 숫자를 선택한 후, 사칙연산과 괄호를 자유롭게 조합하여 만들 수 있는 모든 가능한 정수를 계산하는 것입니다. 예를 들어, 주어진 숫자가 1, 2, 3, 4라면, 이 네 숫자를 사용해 다양한 수식을 만들어내고, 그 수식을 통해 결과로 얻을 수 있는 모든 정수를 구하게 됩니다.문제의 규칙은 다음과 같습니다.1. 네 개의 숫자는 모두 서로 달라야 합니다.2. 각 숫자는 한 번만 사용할 수 있습니다.3. 사칙연산(+, -, *, /)과 괄호를 사용하여 가능한 많은 정수를 만들어냅니다.4. 음수나.. 2024. 11. 14.
[C/C++] 프로젝트 오일러 #92 Square Digit Chains(동적계획법) Project Euler 문제 92번은 숫자의 반복적인 변환 과정을 다룹니다. 기본적으로, 하나의 숫자를 각 자릿수로 나눈 뒤 각각의 자릿수를 제곱하여 더하는 과정을 반복하는데, 모든 숫자는 결국 1이나 89로 수렴하게 됩니다. 이 문제에서 중요한 점은 어떤 숫자들이 89로 도달하게 되는지 찾는 것입니다.예를 들어 숫자 44로 시작한다고 가정해봅시다. 4의 제곱은 16이므로, 44의 자릿수인 4와 4를 각각 제곱하면 16과 16이 되어 합계는 32입니다. 32를 다시 같은 방식으로 계산해보면 3²과 2²의 합인 13이 됩니다. 이어서 13을 1²과 3²로 계산하여 10을 얻고, 마지막으로 1²과 0²의 합을 통해 1에 도달하게 됩니다. 따라서 44는 최종적으로 1에 수렴하는 수라는 결론에 도달합니다.다른.. 2024. 11. 13.
728x90