전체 글 77

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

dart 은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치파일이 아닙니다 (with 안드로이드 스튜디오)

윈도우 10 환경에서 안드로이드 스튜디오의 터미널로 dart 프로그램 실행 시,'dart'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라는 문구가 나올 때 해결책은 다음과 같이 진행한다.  ✅  윈도우 10 환경변수 Path 설정 (이미 설정되어 있으면 다음 단계) ✔ 시스템 환경변수 편집 ✔ 환경변수 버튼 클릭 ✔ 환경변수 버튼 설정기존 Path 변수가 있는 경우flutter 압축해제한 디렉토리 설정 ( C:\flutter\bin )기존 Path 변수가 없는 경우flutter 압축해제한 디렉토리 설정 ( C:\flutter\bin ) ✅ 안드로이드 스튜디오 설정  ✔ 안드로이드 스튜디오에서 SDK 매니저 클릭 ✔ SDK Tools 에서 Android SDK C..

[Dart] 코딩 연습 입출력 코드 방법

Dart에서 코딩 연습을 할 때 사용하는 기본적인 입출력 방법을 정리한다.입력을 받기 위해서는 dart:io 라이브러리를 사용해야 한다. 📌 문자열 입력받기 Dart에서 문자열을 입력받으려면 stdin.readLineSync()를 사용한다.import 'dart:io';void main() { // 사용자에게 입력 요청 stdout.write('문자열을 입력하세요: '); // 문자열 입력받기 String? str = stdin.readLineSync()!; // String str = stdin.readLineSync().toString(); 도 가능 print("입력값: $str"); } ✅ 실행 예시문자열을 입력하세요: sky입력값: sky 📌 공백으로 구분된 문자열..

파이썬 윤년 계산하기 (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 ..

[파이썬] 시간 함수 어떻게 쓰나 (with 백준 10699)

파이썬에서 시간 및 날짜 관련 함수는 time 모듈과 datetime 모듈을 활용하여 쉽게 다룰 수 있다.time 모듈 → 프로그램 실행 시간을 측정할 때 사용datetime 모듈 → 날짜 계산 및 포맷 변환할 때 사용이번 포스트에서는 시간 함수 활용법과 백준 10699번 문제 풀이를 해보겠다. 📌 time 모듈 – 실행 시간 측정하기 프로그램의 실행 시간을 측정하고 싶다면 time.time() 함수를 사용할 수 있다. ✅ 실행 시간 측정 코드import timest = time.time() # 시작 시간 기록# 프로그램 실행 (예: 1초 대기)time.sleep(1)end = time.time() # 종료 시간 기록diff = end - st # 실행 시간 계산print(f"프로그램 작동시간: ..

[Dart] 변수 종류, 널(null) 변수 디폴트 처리

Dart에서는 변수를 선언하는 방법이 다양하며, 변수의 타입을 어떻게 지정하는지에 따라 다르게 동작한다.또한, null 값을 허용할지 여부도 변수 선언 시 결정할 수 있다. 이번 포스트에서는 Dart 변수 선언 방식과 null 처리 방법을 정리해본다. 📌 Dart 변수 선언 방법 Dart의 변수 선언 방식은 3가지로 나뉜다. 1. var 2. dynamic 3. final & const ✅ var – 초기 값의 타입이 고정되는 변수 var 키워드로 선언된 변수는 처음 할당된 값의 타입으로 고정된다. • 한 번 타입이 정해지면 다른 타입의 값을 저장할 수 없다.void main() { var strName = "유니네 라이브러리"; print(strName); // 유니네 라이브러리 // Err..

Dart 주석 처리

Dart에서는 코드의 가독성을 높이고, 설명을 추가하기 위해 **주석(Comment)**을 사용할 수 있다.Dart 주석은 3가지 종류가 있다.싱글 라인 주석 (//)멀티 라인 주석 (/* ... */)문서화 주석 (///)이번 포스트에서는 Dart의 주석 처리 방법을 정리해본다. 📌 1. 싱글 라인 주석 (//)한 줄짜리 주석을 작성할 때 사용한다.// 뒤에 오는 내용은 해당 줄 끝까지 Dart 컴파일러가 무시한다.// calcuAB 함수는 두 개의 정수를 입력받아 계산.int calcuAB(int A, int B) { return (A + B) * (A - B);}✅ // 뒤의 설명은 코드 실행에 영향을 주지 않는다. 📌 2. 멀티 라인 주석 (/* ... */)여러 줄에 걸쳐 주석을 작성할 때..

백준 2164 큐, deque 연습

[문제 링크] 🔗 백준 2164 - 카드2 백준 2164 문제는 큐(Queue) 자료구조를 활용하여 풀 수 있는 문제이며,카드를 특정 규칙에 따라 제거하면서 마지막에 남는 카드를 찾는 문제이다. 📌 문제 이해1 ~ N까지의 카드가 순서대로 놓여 있다.맨 위의 카드를 버린다.그다음 맨 위의 카드를 제일 아래로 옮긴다.위 과정을 반복하여 마지막에 남는 카드를 찾는다.✅ 큐(Queue)의 FIFO(선입선출) 구조를 활용해야 한다.✅ deque를 사용하면 더 효율적으로 해결할 수 있다. 📌 풀이 방법 이 문제를 해결하는 방법은 두 가지가 있다.deque.rotate() 메서드를 사용하는 방법popleft()와 append()를 조합하여 직접 구현하는 방법🔹 1. rotate() 메서드를 이용한 풀이 ✅ ..

파이썬 스택, 큐 deque (with 백준 18258)

✅ 스택(Stack)과 큐(Queue)는 기본적인 자료구조로 다양한 알고리즘에서 활용된다.✅ 파이썬에서는 list와 deque를 활용하여 스택과 큐를 구현할 수 있다.✅ 백준 18258번 문제(큐2)를 통해 deque를 연습해 본다! 📌 스택과 큐의 차이점자료구조동작 방식특징스택 (Stack)LIFO (Last In First Out)나중에 들어간 요소가 먼저 나옴큐 (Queue)FIFO (First In First Out)먼저 들어간 요소가 먼저 나옴 📌 스택 (Stack) - 리스트 활용 파이썬에서는 list 객체를 이용하여 스택을 구현할 수 있다.stack = []# 요소 추가 (push)stack.append(1)stack.append(2)stack.append(3)print(stack) #..

파이썬 중복제거 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()으로 변환 → 다시 리스트로 변환..