목록전체 글 (106)
오예 !!!
절차형 프로그래밍 수행되어야 할 연속적인 계산 과정으로 로직이 이루어져 있음 일이 진행되는 방식으로 코드를 구현 코드의 가독성이 좋음 실행 속도가 빠름 계산이 많은 작업에 주로 사용됨 ex) 포트란을 이용한 대기 과학 관련 연산 작업, 머신 러닝의 배치 작업 등 단점 - 모듈화하기 어렵고 유지 보수성이 떨어짐 예시 - 자연수로 이루어진 배열에서 최댓값을 찾는 경우 const ret = [1, 2, 3, 4, 5, 11, 12] let a = 0 for (let i = 0; i < ret.length; i++){ a = Math.max(ret[i], a) } console.log(a) // 12
객체지향 프로그래밍 (OOP) 객체들의 집합으로 프로그램의 상호작용을 표현하며, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식 설계에 많은 시간 소요 & 처리속도가 다른 패러다임에 비해 상대적으로 느림 예시) 자연수로 이루어진 배열에서 최댓값을 찾는 로직 List라는 클래스를 만들고 a라는 객체를 만들 때 최댓값을 추출해내는 메서드 const ret = [1, 2, 3, 4, 5, 11, 12] class List { constructor(list){ this.list = list this.mx = list.reduce((max, num) => num > max ? num : max, 0) } getMax(){ return this.mx } } const a = new List(re..
선언형과 함수형 프로그래밍 선언형 프로그래밍 '무엇을' 풀어내는가에 집중 "프로그램은 함수로 이루어진 것이다"라는 명제가 담겨 있음 함수형 프로그래밍 선언형 패러다임의 일종 작은 순수함수들을 블록처럼 쌓아 로직을 구현하고, 고차함수를 통해 재사용성을 높임 자바스크립트는 단순 & 유연한 언어이고, 함수가 일급 객체 ➡️ 객체지향 보다 함수지향 프로그래밍 선호 예시 reduce()는 '배열'만 받아서 누적한 결괏값을 반환하는 순수 함수 const ret = [1, 2, 3, 4, 5, 11, 12] .reduce((max, num) => num > max ? num : max, 0) console.log(ret) // 12 순수 함수 출력이 입력에만 의존하는 것 아래의 pure 함수는 매개변수 a, b에만 ..
프로그래밍 패러다임 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론 예시 객체지향 프로그래밍 - 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 함 함수형 프로그래밍 - 상태 값을 지니지 않는 함수 값들의 연속으로 생각하게 함 언어별로 지원하는 패러다임이 다름 jdk 1.8 이전의 자바 - 객체지향 프로그래밍 하스켈 - 함수형 프로그래밍 여러 패러다임을 지원하는 언어도 존재 C++, 파이썬, 자바스크립트 자바의 경우 jdk 1.8부터 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스 도입 선언형 프로그래밍을 위해 스트림(stream) 같은 표준 API 등을 추가 참고) API: 운영체제와 응용 프로그램 사이의 통신을 위한 언..
라이브러리 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것 폴더명, 파일명 등에 대한 규칙이 없고 프레임워크보다 자유로움 ex) '도구'인 '가위'를 이용해서 '내가' 직접 컨트롤 프레임워크 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 엄격함 ex) '도구'인 '비행기'를 타고 이동하지만 '비행기'가 컨트롤하고 나는 가만이 앉아 있음 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것
이코테 p.178 실전문제 - 위에서 아래로 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다. (1
파이썬의 정렬 라이브러리 정렬 알고리즘 문제를 풀 때, 정렬 알고리즘을 직접 작성하는 것보다 미리 만들어진 라이브러리를 이용하는 것이 효과적인 경우가 많음 sorted() 함수 파이썬의 기본 정렬 라이브러리에서 제공 병합 정렬 기반 퀵 정렬보다 느리지만, 최악의 경우에도 O(NlogN) 시간 복잡도 보장 리스트, 딕셔너리 자료형 등을 입력받아서 정렬된 결과를 출력 이때, 반환되는 결과는 무조건 리스트 자료형 소스코드 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] result = sorted(array) print(result) # 실행 결과 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] sort() 함수 리스트 객체의 내장 함수 리스트 변수가 하나 있을 때 내부 원소를..
(1) 퀵 정렬 기준을 설정한 다음, 큰 수와 작은 수를 교환한 후 리스트를 반으로 나누는 방식으로 동작 '피벗 pivot' 사용 큰 숫자와 작은 숫자를 교환할 때, 교환하기 위한 기준 퀵 정렬 수행 전, 피벗을 어떻게 설정할 것인지 미리 명시 필요 대표적인 분할 방식으로 호어 분할 방식이 있음 호어 분할 방식 리스트의 첫 번째 데이터를 피벗으로 정함 동작과정 특정한 리스트에서 피벗을 설정한 뒤, 왼쪽에서부터 피벗보다 큰 데이터를 찾고, 오른쪽에서부터 피벗보다 작은 데이터를 찾음. 그 후, 큰 데이터와 작은 데이터를 스왑. 이 과정을 반복하면 피벗에 대하여 정렬이 수행됨. 다시 피벗을 기준으로 왼쪽 리스트와 오른쪽 리스트에 각각 정렬 수행. 동작과정 예시: [5, 7, 9, 0, 3, 1, 6, 2, 4..