본문 바로가기
728x90

CS, 알고리즘5

[Design Pattern] 디자인 패턴 디자인 패턴이란? OOP 설계를 할 때, 자주 발생하는 문제들을 피하기 위해 사용되는 패턴 효율적인 코드를 만들기 위한 방법론! 즉, 클린 아키텍처를 위한 전략, 전술 디자인 패턴의 종류 생성 패턴 클래스나 객체의 생성과 참조 과정을 정의하기 위한 패턴 객체의 생성과 조합을 캡슐화해, 특정 객체가 생성, 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공하기 위한 것을 목표로 둔다 싱글톤(Singleton) : 클래스에서 하나의 객체만 생성, 그 하나의 객체는 어디든 참조가능 하나, 동시 참조는 불가. 전역적인 접근점을 제공하는 패턴으로, 디자인 패턴의 가장 많이 알려진 패턴 프로토타입(Prototype) : 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴 팩토리 메서드(Factory .. 2023. 9. 24.
객체지향, 함수형, 반응형 프로그래밍 프로그래밍 패러다임 프로그래밍 스타일을 의미하며, 전체적인 프로그래밍 방식을 의미한다. 패러다임의 뜻은 (세계를) 이해하는 방식, 인식틀을 의미한다. 객체 지향 프로그래밍(OOP) 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객채로 만들고, 그 객체들간의 유기적인 상호작용을 통해 로직을 구성하는 방법 장점 코드 재사용 용이 -> 남이 만든 클래스를 가져와서 이용할 수 있고, 상속을 통해 확장해서 사용 가능 유지 보수 쉬움 -> 수정해야할 부분이 클래스 내부에 맴버 변수혹은 메서드로 존재하기 때문에 유지보수 쉬움 대형프로젝트에 적합 -> 클래스 단위로 모듈화시켜서 개발할 수 있으므로 업무 분담하기 쉬움 단점 처리 속도가 상대적으로 느림 객체가 많으면, 용량이 커질 수 있음 설계시 많은 시간과 노력이 필.. 2023. 9. 11.
백준 10815번 회고(파이썬) 회고 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import sys N = int(sys.stdin.readline()) Nlist = [] * N Nlist = list(map(int, sys.stdin.readline().split())) M = int(sys.stdin.readline()) Mlist = [] * M Mlist = list(map(int, sys.stdin.readline().split())) find = [] find = list(set(Mlist) & set(Nlist)) result = [] for i in range(M): for j in range(len(find)): if Mlist[i].. 2023. 6. 30.
백준1181번 문제(파이썬) 1181번 문제(파이썬) 회고 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import sys N = int(sys.stdin.readline()) result = [] Nlist = [sys.stdin.readline().strip() for _ in range(N)] result = list(set(Nlist)) result.sort() result.sort(key=lambda x: len(x)) for i in range(len(result)): print(result[i]) Colored by Color Scripter cs - N 을 입력받는 것에 int(sys.stdin.readline())을 사용한 이유는 시간을 최대한 줄이기 위해서 이다. -list에서 append를 사.. 2023. 6. 27.
[알고리즘] 계수정렬(Counting Sort) .feat 백준 10989번(파이썬) 계수 정렬이란? - 원소들간의 비교를 하지 않고, 숫자의 개수를 파악하여 정렬을 수행하는 알고리즘이다. - 타 정렬들과 다르게 비교하지않아서 시간복잡도는 O(N)이다. - 10989번의 문제는 시간제한이 있어 계수정렬을 이용하여 풀기로 생각하였다! 계수 정렬 수행과정 1. 입력받은 혹은 정렬을 하고 싶은 데이터 리스트에서 최대값 + 1 하여 리스트를 만든다. 2. 최대값 + 1 리스트에 데이터가 몇개가 겹치는지 횟수를 기록한다. 3. 그 횟수를 토대로 인덱스를 출력한다. 아래는 위의 계수 정렬을 파이썬코드로 구현한겁니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import sys input = sys.stdin.readline N = int(.. 2023. 6. 25.
728x90
반응형