본문 바로가기

분류 전체보기

(46)
유클리드 호제법과 재귀함수 : 백준 2609[최대공약수와 최소공배수] & 파이썬 오늘 재귀 함수를 공부하면서 전에 풀었던 백준 문제가 생각이 나서 같이 정리해보고자 가지고 왔다. 🔍 재귀함수(Recursion Function) 쉽게 말하면, 자기 자신을 호출하는 함수. 자세한 설명은 재귀함수 위키피디아 참고 수학적 귀납법과 비슷함 실체하지 않는 개념을 수학적 모델로 만들고, 그 수학적 모델을 하나씩 차감시켜가면서 호출하는 것만으로도 문제가 해결되게 하는 것 1 ) 재귀함수의 활용 재귀적으로 문제를 푼다는 것 : 같은 형태의 더 작은 문제를 풀고, 부분 문제의 답을 이용해서 기존 문제를 푸는 것! 재귀적으로 풀기 위해서는 항상 아래와 같이 두 case를 나누어서 생각해야한다. Base case: 이미 문제가 충분히 작아서, 더 작은 부분 문제로 나누지 않고도 바로 답을 알 수 있는 경..
[python] PEP 8(코딩 스타일 가이드) -- Style Guide for Python Code & 파이썬의 변수 이름 규칙 1. PEP8이란 파이썬 공식 홈페이지에서 PEP8를 아래와 같이 소개하고 있다. This document gives coding conventions for the Python code comprising the standard library in the main Python distribution. Please see the companion informational PEP describing style guidelines for the C code in the C implementation of Python. - python PEP8 Introduction PEP8은 "python 코드에 대한 코딩 규칙"을 제공한다. 공식 문서 내용을 확인해 보면, python을 만든 Guido van Rossum..
[OOP] (4) 추상화(Abstraction) : docstring, type hinting, 정적 동적 타입 언어 Hello👋 I'm Dona!:) 객체 지향프로그래밍 영어로는 OOP(Object-Oriented-Programming) 정리하기 4탄! 🏡 🔍 들어가며 : 프로그래밍에서 추상화란? 변수, 함수, 클래스를 사용해 사용자가 꼭 알아야만 하는 부분만을 겉으로 드러내는 것 프로그래머들이 특정 코드를 사용할 때, 필수적인 정보를 제외한 세부사항을 가리는 것 변수 추상화, 함수 추상화, 클래스 추상화 등이 있다. 추상화란, " 복잡한 내용은 숨기고, 주요 기능에만 신경쓰는 것 " 1. 추상화 잘하기 : 이름 잘 짓기 클래스, 변수, 메소드의 이름을 어디에 쓸 수 있고, 어떻게 사용하는지 직관적으로 유추되는 이름을 사용하자 변수 이름에 대한 규칙이 궁금하다면 PEP8을 참고하자 - python PEP8(코딩 스타일..
[OOP] (3) 메소드의 종류 : 인스턴스 메소드, 클래스 메소드, 정적 메소드 (with 파이썬 코드) & 특수메소드 Hello👋 I'm Dona!:) 객체 지향프로그래밍 영어로는 OOP(Object-Oriented-Programming) 정리하기 3탄! 🏡 객체지향 프로그래밍에서, 클래스 안에서 사용되는 함수인 메소드의 종류에는 크게 3가지가 있다. 인스턴스 변수의 값을 읽거나 설정하는 메소드인 인스턴스 메소드(instance method) 클래스 변수의 값을 읽거나 설정하는 메소드인 클래스 메소드(class method) 인스턴스 변수, 클래스 변수를 전혀 다루지 않는 메소드인 정적 메소드(static method) 차근차근 코드와 함께 알아보자👀 1. 인스턴스 메소드(instance method) 인스턴스 변수의 값을 읽거나 설정하는 메소드 인스턴스 메소드를 사용하는 방법 (2번 방법을 많이 사용한다) {클래스 이..
[OOP] (2) 인스턴스 변수와 클래스 변수 Hello👋 I'm Dona!:) 객체 지향프로그래밍 영어로는 OOP(Object-Oriented-Programming)에 대해 정리하기 2탄! 🏡 🔍 인스턴스 변수(instance variable) 지난 포스팅에서 언급했듯, 인스턴스는 객체를 실체화 시킨 것으로 클래스로 만들 수 있다. 오늘도 인스턴스 변수 위키백과를 먼저 짚고 넘어가자 클래스가 있는 객체 지향 프로그래밍에서 인스턴스 변수(instance variable)는 클래스에 정의된 변수로, 인스턴스 변수는 클래스 변수와 비슷하다. 인스턴스 변수는 클래스 변수가 아니지만 유사점이 있다. 클래스 속성(클래스 프로퍼티, 필드, 데이터 멤버)의 일종이다. 클래스는 인스턴스 메소드와 클래스 메소드를 둘 다 소유할 수 있다. 변수는 오브젝트가 자기 자신..
[OOP] (1) 클래스, 객체, 인스턴스, 객체지향 vs 절차지향 프로그래밍 정의 Hello👋 I'm Dona!:) 객체 지향프로그래밍 영어로는 OOP(Object-Oriented-Programming)를 정리해보자! 🏡 🔍 객체란? 우선, 위키백과를 먼저 뜯어보면 아래와 같이 정의하고 있다. 컴퓨터 과학에서 객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다. 클래스? 메모리? 식별자? 어려운 말이 잔뜩 있는데, 쉽게 정의하면 아래와 같이 생각할 수 있다 ..
브루트포스(Brute-force search) : 백준 14719 [빗물] & 파이썬 브루트포스 알고리즘을 공부하면서, 백준 문제에도 적용을 해보았습니다! 👀 반복 숙달을 통해 더욱 익숙해지자! 🏆 참고로 해당 문제는 leet_code에서도 찾을 수 있었습니다. 해당 문제도 업데이트해보겠습니다. 주소는 제일 아래 reference에 추가하겠습니다. 🔍 Brute-force search 그대로 해석하면 "무차별 대입 검색" 의미 그대로, 무차별적으로 가능한 모든 경우의 수를 시도해 보는 알고리즘 가장 순진한 알고리즘 접근법 예를 들어, 비밀번호 4자리 자물쇠가 있다고 하면, 0000부터 9999까지 전체를 다 확인하는 것! 이미지는 여기에서 가지고 왔습니다. 👍 장점 직관적이고 명확하다 답을 확실하게 찾을 수 있다 😵‍💫 단점 모든 경우를 보기 때문에 비효율적임 ➡️ 인풋이 커질수록 비효율..
백준 1929[소수 구하기] : 파이썬 & 시간초과 해결방법 & 소수 판정, 에라토스테네스의 체 📎 Problem https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 📎 Submission Code 알고리즘 문제를 풀 때, 1가지 방식으로만 접근하기보다는 다양한 방법으로 접근하는 습관을 가지자👊🏻 # case 1 '''에라토스테네스의 체 활용하기 : 시간을 줄이기 위해서 루트한 부분까지만 for 반복문''' import sys M, N = map(int, sys.stdin.readline().split()) prime_num = [] for i in range(M, N+1..