🖥️ CS, 개발상식 16

[클린코드] - 변수, 함수

본 포스팅은 코드리뷰를 진행하며 팀원으로부터 받은 피드백과 클린코드 도서를 종합하여 새롭게 꺠달은 점이나 코드를 고쳐나가는 과정을 기록하는 포스팅입니다. 혹시 틀린 정보가 있다면 댓글로 알려주시면 감사하겠습니다 :) 1. 함수는 작으면 작을수록 좋다. 하나의 블록 안에 코드가 길어지면 길어질수록 이해하기 힘들다. 길어지는 부분을 또 하나의 기능 단위로 나누어 함수화하고, 이를 호출하는 것이 더 명확하게 이해하기 쉬워진다. 2. if - else 블록은 가급적이면 뎁스 1개가 가장 좋다. 블록 안에 if - else 문이 또 들어가게 되면 함수 가독성이 떨어지게 된다. 팀원의 말을 가져오면 차라리 만족하지 않는 조건일 경우에 return 시켜버리는게 더 좋은 방법이라고 한다. (if 블록 뎁스가 2개 이상..

[MySQL] SQL 코딩테스트 준비(feat. 프로그래머스 SQL 고득점 Kit)

✅ max(컬럼), min(컬럼) : 지정한 컬럼의 값 중 최대값/최소값 출력 https://school.programmers.co.kr/learn/courses/30/lessons/131697 SELECT MAX(PRICE) FROM product; - 정수 뿐만 아니라 문자열도 비교하여 문자열 기준 최대값, 최소값을 구할 수 있음 https://school.programmers.co.kr/learn/courses/30/lessons/59415 SELECT max(datetime) from animal_ins ✅ 집계함수 count(*) : 조건을 만족하는 모든 행의 갯수 반환 (null 포함) https://school.programmers.co.kr/learn/courses/30/lessons/59..

[자료구조/Swift] 우선순위 큐 (Priority Queue)

우선순위 큐(Priority Queue) 란? 기존의 큐(Queue)가 선입선출(FIFO, First-In, First-Out) 구조였다면 우선순위 큐는 우선순위가 높은 데이터가 먼저 선출되는 구조의 자료구조이다. 주로 우선순위 큐는 최소값/최대 값부터 먼저 빠져나오는 힙을 사용하여 구현한다. 힙 포스팅 참고 Swift로 우선순위 큐 구현하기 최소힙/최대힙 원리를 알고 구현했으면 그걸 그대로 가져오기만 하면 된다. import Foundation struct PriorityQueue { var heap = Heap() var count : Int { return heap.count } var isEmpty : Bool { return heap.isEmpty } mutating func pop() -> T..

[자료구조/Swift] 힙(Heap)

Swift로 힙을 구현하기 전에, 우선 힙의 개념을 정리해보고자 한다. 힙(Heap) 이란? 1) 완전 이진 트리 (왼쪽에서 오른쪽으로 차례대로 채워진 이진 트리) 2) 최소 힙 : 부모 노드의 값은 항상 자식 노드들의 값보다 작거나 같다. (보통 코딩테스트에서는 이걸 기본으로 하고, 최대를 구해야할 때는 음수로 치환해서 품. 다익스트라 알고리즘에서도 사용) -> 루트 노드가 최소값 최대 힙 : 부모 노드의 값은 항상 자식 노드들의 값보다 크거나 같다. -> 루트 노드가 최대값 * 우선순위 큐를 구현할 때 힙을 자주 쓰는 이유는, 노드의 값이 작아질수록 혹은 클수록 우선순위가 높아진다고 고려했을 때 힙에서 데이터를 추출할 때 우선순위가 높은 것(가장 작은것 혹은 가장 큰 것)부터 먼저 추출되므로 우선순위..

[자료구조/Swift] 덱(Dequeue)

Swift로 직접 자료구조 구현하기 - 덱 ✅ 간단하게 알아보는 덱 - 스택과 큐의 연산을 모두 가지고 있는 자료구조이다. - 앞, 뒤에서 삽입, 삭제 모두 가능한 자료구조 1) 뼈대 잡기 (더블 스택을 사용한 큐와 동일) struct Dequeue { var input = [T]() var output = [T]() var isEmpty : Bool { return input.isEmpty && output.isEmpty } var size: Int { return input.count + output.count } var first: T? { if isEmpty { return nil } return output.isEmpty ? input.first! : output.last! } var last:..

[자료구조/Swift] 큐(Queue)

Swift로 직접 자료구조 구현하기 - 큐 ✅ 간단하게 알아보는 큐 - 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조로, FIFO(First-In, First-Out), 선입선출 구조 이다. - 마치 음식점에서 줄섰을 때, 먼저 줄 선 사람부터 식당에 들어가는 것과 같다 - 메소드는 enqueue() : 큐에 데이터를 넣기 / dequeue() : 큐에 데이터를 꺼내기 가 있다. 1) 뼈대 잡기 struct Queue { var elements:[T] = [] var isEmpty: Bool { return elements.isEmpty } var size: Int { return elements.count } } 2) 메소드 추가 - enqueue(), dequeue() mutating fun..

[자료구조/Swift] 스택 (Stack)

Swift로 직접 자료구조 구현하기 - 스택 스택 개념 설명과 C 언어 코드는? 여기를 참고해주세요! 혹시 틀린 부분이 있다면 지적해주시면 감사하겠습니다! 1) 뼈대잡기 - 스택에 담길 요소를 담은 배열 elements - count는 스택의 크기로, 배열의 크기이며 isEmpty는 스택이 비어있는지 확인하는 변수로, pop 연산이나 peek 연산 수행 시 쓰인다. struct Stack { var elements: [T] = [] //제너릭으로 배열 생성 var count : Int { return elements.count } var isEmpty : Bool { return elements.isEmpty } } 2) 관련함수 - 스택에는 데이터를 추가하는 push(), 데이터를 꺼내오는 pop() ..

[자료구조/C] 스택(Stack)

스택(Stack)이란? 데이터를 쌓아 올리는 자료형 -> 후입 선출 형태(LIFO:Last-In First-Out, 가장 최근에 들어온 데이터가 가장 먼저 나감) 스택의 구조 스택에서의 입출력은 맨 위에서만 발생한다. (한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조) 스택 상단(top) : 스택에서 입출력이 이루어지는 부분 요소(element) : 스택에 저장되는 것 스택의 연산 push 연산 : 스택에 데이터 추가 pop 연산 : 스택의 데이터 삭제 peek 연산 : 삭제하지 않고 보기만 하는 연산 스택의 구현 is_empty() : 스택이 비어있는지를 검사하는 함수 -> top이 -1이면 공백 is_full() : 스택이 포화 상태인지를 검사하는 함수 -> top이 MAX_STACK_SIZE-1이면..

[자료구조/C] 선택 정렬(selection sort)

선택 정렬이란? 오름차순으로 정렬할 경우, 가장 작은 숫자를 선택하여 왼쪽으로 이동하거나 가장 큰 숫자를 선택하여 오른쪽으로 이동하는 정렬 방법이다. (내림차순의 경우, 가장 작은 숫자는 오른쪽으로, 가장 큰 숫자는 왼쪽으로 이동한다) 즉, 배열에서 최소값을 찾아 이 최소값을 배열의 첫 번째 요소와 교환하고 그 다음에는 첫 번째 요소를 제외한 나머지 요소들 중에서 가장 작은 값을 선택하여 두 번째 요소와 교환한다. (최대값을 찾아 배열의 마지막 요소와 교환하고 그 당므에는 마지막 요소를 제외한 나머지 요소들 중에서 가장 큰 값을 선택하여 마지막에서 두 번째 요소와 교환한다.) 이 과정을 (배열의 크기-1) 만큼 반복하여 배열이 모두 정렬될 때까지 반복한다. 최소값을 찾아 교환하는 방식 void selec..

[자료구조/C] 동적 메모리 할당(dynamic memory allocation)

동적 메모리 할당이란? int a[100]과 같이 고정된 크기로 필요한 메모리 할당을 하는 방법을 정적 할당이라고 한다. 그러나 프로그램을 작성하면서 얼마나 많은 입력이 있을지 알 수가 없는 경우가 많다. 만약 고정된 크기보다 더 큰 입력이 들어온다면 프로그램을 처리하지 못하며, 더 작은 입력이 들어온다면 메모리를 낭비하게된다. 따라서, 이러한 문제를 해결하기 위해 실행 중에 필요한 만큼의 메모리를 운영체제에서 할당받아 사용하고, 사용이 끝나면 다시 시스템에 메모리를 반환하는 기능을 동적 메모리 할당(dynamic memory allocation)이라고 한다. 이 때, 동적 메모리가 할당 되는 공간은 힙(heap)이다. 힙은 운영체제가 사용되지 않는 메모리 공간을 모아 놓은 곳이다. 동적 메모리 할당 형..

반응형