코딩테스트 17

[파이썬] 백준 2309 일곱 난쟁이 (조합 combination)

✅ 백준 문제 링크: 백준 2309번 - 일곱 난쟁이1. 조합(Combination) 이란? 조합이란, 서로 다른 n개의 원소 중에서 r개를 중복 없이 선택하는 방법을 의미한다.순서는 고려하지 않으며, 파이썬에서는 itertools.combinations() 함수를 사용하여 쉽게 구현할 수 있다. 📌 조합 예제from itertools import combinationspeople = ['A', 'B', 'C']combi = list(combinations(people, 2)) # 3명 중에서 2명을 선택하는 경우의 수print(combi) 🔹 출력:[('A', 'B'), ('A', 'C'), ('B', 'C')] 2. 문제 설명 아홉 난쟁이 중에서 일곱 명을 골라 키의 합이 100이 되는 경우를 ..

[파이썬] 백준 13706 이분탐색이란

✅ 백준 문제 링크: 백준 13706번 - 제곱근1. 이분 탐색(Binary Search) 기본 원리 이분 탐색은 정렬된 배열에서 특정 값을 빠르게 찾는 알고리즘이다.다음과 같은 방식으로 동작한다. 1️⃣ 배열의 중간값을 찾는다.2️⃣ 찾고자 하는 값과 중간값을 비교한다.중간값이 찾는 값보다 크면 왼쪽 부분을 탐색한다.중간값이 찾는 값보다 작으면 오른쪽 부분을 탐색한다.3️⃣ 이 과정을 반복하여 값을 찾을 때까지 탐색한다. ✅ 이분 탐색의 전제 조건: • 탐색할 배열이 반드시 정렬된 상태여야 한다! 2. 이분 탐색 기본 알고리즘 (반복문 & 재귀 호출) 📌 반복문(Binary Search - Iterative)#이분탐색 반복문def binary_search(target, data): data.so..

[Dart] if, swich 조건문 (with 백준 1330)

1. if 문 사용법 Dart에서 if 문은 특정 조건을 확인하고, 조건에 맞는 코드를 실행하는데 사용된다.기본 구조는 다음과 같다.if (조건문) { // 실행할 코드} else if (조건문) { // 실행할 코드} else { // 실행할 코드} 📌 예제 코드 (if문 다중 처리)import 'dart:io';void main() { // 입력값 받기 String? inp = stdin.readLineSync(); int x = int.parse(inp!); if (x 1 && x  2. if case 문 사용하기 Dart 3.0부터 if case 문법을 사용할 수 있다.if case 문은 패턴 매칭을 활용하여 특정 조건을 검사할 때 사용된다.if (변수 case 조건문) { //..

[파이썬] 백준 1929 소수 구하기, 소수 판별법

✅ 백준 문제 링크: 백준 1929번 - 소수 구하기1. 소수란? 소수(Prime Number)란 1과 자기 자신으로만 나누어 떨어지는 수를 의미합니다.즉, 약수가 1과 자기 자신뿐인 수를 소수라고 합니다. ✅ 소수 예시 (1~10까지)1, 2, 3, 4, 5, 6, 7, 8, 9, 10 → 소수: 2, 3, 5, 7 2. 소수 판별법 어떤 수 N이 소수인지 판별하는 기본적인 방법은1부터 N까지의 모든 수로 나누어보는 것이다. 그러나 이 방법은 시간 복잡도가 O(N) 이므로,입력값이 커질 경우 비효율적이다. ✅ 최적화된 소수 판별법 (제곱근 이용) 어떤 수 N이 소수인지 판별할 때,“N의 제곱근 이하의 수까지만 나누어 보면 충분” 하다.즉, sqrt(N) 이하의 수까지만 나눠보고 나누어 떨어지지 않으면 ..

[파이썬] 백준 2609 최대공약수, 최소공배수

✅ 백준 문제 링크: 백준 2609번 - 최대공약수와 최소공배수1. 최대공약수(GCD)와 최소공배수(LCM)란? ✅ 최대공약수(GCD, Greatest Common Divisor) 0이 아닌 두 정수 n과 m이 공통으로 가지고 있는 약수 중 가장 큰 수를 의미한다. 약수란?어떤 수를 나누어 떨어지게 하는 수를 뜻한다.예를 들어 6의 약수는 1, 2, 3, 6 이다.즉, 어떤 수를 두 개의 정수로 나눌 수 있으면, 그 정수들은 해당 수의 약수이다. ✔ 예제: 12와 20의 최대공약수12의 약수: 1, 2, 3, 4, 6, 12 20의 약수: 1, 2, 4, 5, 10, 20 공통 약수: 1, 2, 4 최대공약수(GCD) = 4 ✅ 최소공배수(LCM, Least Common Multiple) 두 정수 ..

백준 1003 피보나치 함수, 다이나믹 프로그래밍 DP (with 파이썬)

✅ 문제 링크: 백준 1003번 - 피보나치 함수 1. 피보나치 수열이란? ✅ 개념 피보나치 수열은 연속한 두 수의 합이 다음 수가 되는 수열이다.다음과 같이 정의된다. F(n) = F(n-1) + F(n-2) 단, 초기값은F(0) = 0, \quad F(1) = 1 🔹 예제0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 2. 다이나믹 프로그래밍(DP)란? ✅ 개념 “이미 계산한 값을 저장하여 중복 계산을 방지하는 기법” • 재사용 가능한 값을 저장하여 빠르게 연산 • 재귀 호출을 최소화하여 성능 개선 • 시간 복잡도를 획기적으로 줄일 수 있음 ✔ 비효율적인 재귀 호출을 방지하여 연산 속도를 크게 향상시킨다. 3. 문제 접근 방식 ❌ 잘못된 접근 (재귀 방식, 시간 초과..

파이썬 윤년 계산하기 (with 백준 2753)

파이썬에서는 **윤년(Leap Year)**을 쉽게 계산할 수 있다.윤년 계산에는 calendar 모듈의 isleap() 함수를 사용할 수도 있고, 조건문을 활용하여 직접 구현할 수도 있다. 📌 calendar.isleap() 함수로 윤년 계산하기 파이썬의 calendar 모듈에는 윤년 여부를 확인하는 isleap(year) 함수가 있다.이 함수는 **윤년이면 True, 윤년이 아니면 False**를 반환한다. ✅ 코드 예제import calendar as cdy = int(input("연도를 입력하세요: ")) # 연도 입력if cd.isleap(y): # 윤년이면 True 반환 print(f"입력한 연도는 윤년입니다.: {cd.isleap(y)}")else: # 윤년이 아니면 False ..