본문 바로가기

전체 글

(31)
2. 객체지향 프로그래밍 OOP 두 번째 패러다임 - 객체지향 프로그래밍 Object Oriented Programming 1. 객체지향이란 정의 : 객체 등 의 집합으로 프로그램의 상호작용을 표현하며, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식. 설계에 많은 시간이 소요되며, 처리속도가 다른 프로그래밍 패러다임에 비해 상대적으로 느림 특징 4가지 : 추상화 / 캡슐화 / 상속성 / 다형성 OOP 설계 원칙 5가지 : 단일 책임 원칙 / 개발 폐쇄 원칙 / 리스코프 치환원칙 / 인터페이스 분리 원칙 / 의존관계 역전 원칙 2. 객체지향의 4가지 특징 A.E.I.P (1) 추상화 Abstraction - 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것. - 클래스의 공통적인 특성(변수, 메서드)들을..
3. 절차형 프로그래밍 Procedural Programming 세 번째 패러다임 - 절차형 프로그래밍 Procedural Programming 1. 절차형 프래그래밍이란 정의 : 절차형 프로그래밍은 프로시저(루틴, 메소드, 함수) 콜의 개념에 기반하면서, computationals steps를 중시함. "Step-wise Procedure" 순차적 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법. C, Cobol 쉽게보는 C Procdures 루틴 : main 서브루틴 : main문 밖에서 정의한 코드 블럭 중에 반환 값이 없는 것 함수 : main문 밖에서 정의한 코드 블럭 중 반환 값이 있는 것 2. 절차형 프래그래밍 장단점 장점 모듈화와 구조화가 용이함. 컴퓨터 처리구조와 유사해 실행 속도가 빠름. 계산용으로 적합. 단점 유..
1. 프로그래밍 패러다임과 선언형 및 함수형 패러다임 Programming Paradigm 1. 프로그래밍 패러다임이란 Programming Paradigm Programming Paradigm이란 개발 방법론을 뜻함. 프로그래밍 패러다임은 프로그래머가 컴퓨터 프로그램을 제작할 때의 관점이라고 할 수 있음. 선언형과 함수형 프로그래밍, 객체지향 프로그래밍, 절차형 프로그래밍 등이 있고 이런 패러다임들을 혼합해서 사용 가능함. 프로그래밍 패러다임은 관점이자 시각이기 때문에 대상의 실체는 변하지 않지만 동일한 대상에 대해서 정의를 다르게 내릴 수도 있음. 예를 들어 객체지향 프로그래밍은 프로그램을 상호 작용하는 객체들의 집합으로 보는 반면, 함수형 프로그래밍은 프로그램을 상태 값을 지니지 않는 함수 값들의 연속으로 봄. 2. 프로그래밍 언어와 프로그래밍 패러다임 Programming Languag..
2. 의존성 주입 DB 연결 (Mysql, Mongoose 등)에 보통 사용되는 싱글톤 패턴은 사용하기 쉽고 실용적이지만 모듈 간의 결합을 강하게 만드는 단점이 있음. 이를 해결하기 위해 의존성 주입을 통해 모듈간 결합을 상대적으로 느슨하게 할 수 있음. (디커플링 할 수 있음.) 1. 의존성 주입 (DI, Dependency Injection) 메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주기보다 중간에 의존성 주입자(dependency injector)가 이 부분을 가로채 메인 모듈이 '간접'적으로 의존성을 주입하는 방식. 이를 통해 메인 모듈(상위 모듈)은 하위 모듈과 디커플링 된다. (의존성이 떨어진다.) 따라서 메인 모듈의 변경 사항에 대해 하위 모듈이 모두 일일이 변해야할 확률이 줄 어둠. 의존성 주입자가..
1. 디자인 패턴 정의와 싱글톤 패턴 1. 디자인 패턴 정의 Design Pattern 디자인 패턴이란 프로그램 설계시 발생한 문제를 객체 간 상호 관계 등을 통해 해결할 수 있도록 ‘규약’의 형태로 만들어 둔 것 규약을 만들어서 모듈화를 함. 라이브러리나 프레임워크의 뼈대가 됨. 2. 라이브러리 정의 Library 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것. 폴더명/파일명 등에 대한 규칙은 없고 프레임워크에 비해 자유도가 높음. 소프트웨어 개발시 프로그래밍이 사용하는 비휘발성 자원이 모임으로 특정 기능을 모아둔 코드 및 함수의 집합으로 코드 작성 시 활용 가능한 도구들을 의미. 3. 프레임워크 Framework 공통으로 사용될 수 있는 특정한 기능을 모듈화 했다는 것은 라이브러리와 동일하지만, 프레임워크는 프로그래밍 규칙이 정..
[Math] 점프와 순간이동-프로그래머스 문제 제목 : 점프와 순간이동 문제 출처 : 프로그래머스 알고리즘 : Math 문제원본링크 https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(N): answer = 0 while N > 0: answer += N % 2 N //= 2 return answer def solution(N): return bin(N).count('1') 처음 위치는 0 에서 N 만큼 떨어진 장소로 가기 위해 최소한으로 소모해야하는 건전지양은 얼..
[Queue] 다리를 지나는 트럭-프로그래머스 문제 제목 : 다리를 지나는 트럭 문제 출처 : 프로그래머스 알고리즘 : Queue(Algorithms & DataStructures) 문제원본링크 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import defaultdict, deque def solution(bridge_length, weight, truck_weights): ans, rest_truck, bridge_sum = 0, len(truck_we..
[자료구조] 주요 알고리즘의 시간복잡도 Time Complexity of Algorithms 1. 알고리즘의 시간복잡도 Algorithms Time Complexity (Big O) 이진 탐색 (Binary Serach) O ( log N ) 깊이 우선 탐색 (DFS) O ( V + E ) (그래프 정점 + 간선 개수만큼) 너비 우선 탐색 (BFS) O ( V + E ) (그래프 정점 + 간선 개수만큼) 크루스칼 (Kruskal) O ( E log E ) 다익스트라 (Dijkstra) O ( E log V ) 벨만-포드 (Bellman-Ford) O ( V * E ) ( 최악의 경우 O ( V^3 ) ) 플로이드 워셜 (Floyd-Warshall) O ( V^3 )