코테 12

[파이썬] 백준 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. 문제 접근 방식 ❌ 잘못된 접근 (재귀 방식, 시간 초과..

파이썬 중복제거 set 집합함수 (with 백준 2776)

✅ 중복을 제거하고 싶다면 set()을 활용한다✅ set()은 리스트를 집합으로 변환하며, 자동으로 중복된 요소를 제거한다.✅ 집합 연산(교집합, 합집합, 차집합)도 쉽게 처리할 수 있다. 📌 set() 함수란? set() 함수는 집합 자료형을 생성하는 함수이다.집합은 중복을 허용하지 않으며, 순서가 없는 자료형이다. 📌 set(iterable) → iterable(반복 가능한 객체)을 집합으로 변환a = [2, 1, 3, 4, 5, 5, 6, 7, 3]unique_a = set(a)print(unique_a) # {1, 2, 3, 4, 5, 6, 7}print(len(unique_a)) # 7 (중복 제거됨) 📌 리스트에서 중복 제거하기 📌 리스트를 set()으로 변환 → 다시 리스트로 변환..

파이썬 Counter (with 백준 10815, 10816)

✅ Counter는 리스트, 문자열 등의 요소 개수를 쉽게 세는 도구이다.✅ 중복된 요소의 개수를 빠르게 확인할 수 있다.✅ 백준 10815, 10816 문제에서 Counter를 활용해 효율적인 풀이가 가능하다. 📌 Counter 객체란? Counter는 collections 모듈에서 제공하는 계수기 도구이다.리스트, 문자열 등의 요소 개수를 빠르게 세는 기능을 제공한다. 📌 사용법:from collections import Counterwords = ['yun', 'Lee', 'yun', 'bang', 'Lee', 'Lee']cnt = Counter(words)print(cnt) # Counter({'Lee': 3, 'yun': 2, 'bang': 1}) 📌 Counter 예제 ✅ 리스트에서 개..

파이썬 람다 함수 lambda (with 백준 1181)

✅ lambda는 익명 함수로, 한 줄로 간결하게 표현 가능✅ 단순한 연산, 정렬, map(), filter() 등의 함수에서 자주 사용됨✅ 백준 1181번 문제에서 lambda를 활용하면 효과적으로 정렬 가능 📌 lambda (람다) 함수란? lambda는 이름 없이 즉석에서 정의하는 간단한 함수이다.주로 간단한 연산이나 정렬 기준을 정의할 때 사용된다. 📌 기본 문법:lambda 매개변수: 표현식lambda a, b: a + b → a와 b를 더하는 함수일반적인 함수처럼 def로 정의하지 않고, 즉석에서 사용 가능📌 사용 예시:add = lambda a, b: a + bprint(add(3, 5)) # 8 📌 lambda 함수 예제 ✅ 리스트에서 거듭제곱 값 저장# 일반적인 for문 사용a ..

파이썬 정렬 sort, sorted (with 백준 2750, 5597, 1181)

✅ sort()는 리스트를 직접 정렬하며, 반환값이 없음✅ sorted()는 원본을 유지하고 정렬된 결과를 반환✅ 백준 문제 풀이를 통해 실전에서 활용 가능 📌 sort()와 sorted()의 차이구분sort()sorted()사용 대상리스트 (list 전용)문자열, 리스트 등 다양한 타입정렬 방식원본 리스트를 직접 정렬정렬된 새 리스트를 반환반환값None정렬된 리스트 반환원본 유지 여부유지되지 않음 (변경됨)유지됨 📌 sort() 메서드 사용법 📌 리스트 내부에서 직접 정렬 (원본 변경됨)A = ['a', 'd', 'e', 'c', 'b']A.sort()print(A) # ['a', 'b', 'c', 'd', 'e'] 📌 숫자 정렬C = [3, 2, 1, 11, 4]C.sort()print(C)..

파이썬 for while 조건문 (with 백준 2446, 2522)

✅ for 문과 while 문을 활용한 반복문✅ 조건문을 사용하여 반복 제어하기✅ 백준 문제 풀이로 실전 적용 연습 📌 for 문 사용법 ✅ 기본적인 for 반복문N = 5for i in range(N): print(i, end=" ") # 출력: 0 1 2 3 4 ✅ 문자열 순회M = '일이삼사오'for i in M: print(i, end=" ") # 출력: 일 이 삼 사 오 ✅ 문자열의 인덱스를 이용한 순회for i in range(len(M)): print(M[i], end=" ") # 출력: 일 이 삼 사 오 ✅ 잘못된 사용 예시for i in M: # 정상 작동 print(i) for i in range(M): # 오류 발생 (M이 문자열이므로 숫자로 해석 불..