고양이와 별무리 도서관

고양이와 별무리 도서관 Post List

[SOLID 원칙] 리스코프 치환 원칙 (Liskov Substitution Principle, LSP)

리스코프 치환 원칙은, 파생 클래스는 기본 클래스를 대신할 수 있어야 한다라는 원칙입니다. 좀 더 원문에 가깝게 말하면, ‘프로그램의 기능이나 동작을 바꾸지 않고도 상위 타입(T)을 하위 타입(S)으로 대체할 수 있어야 한다’는 원칙입니다. 컴퓨터 프로그램에서 자료형 𝑆가 자료형 𝑇의 서브타입(하위 타입)이라면 필요한 프로그램의 속성(정확성,...

[SOLID 원칙] 개방-폐쇄 원칙 (Open-Closed Principle, OCP)

개방-폐쇄 원칙이란, 객체(클래스, 모듈, 함수 등)가 확장에는 열려 있어야 하고 변경에는 닫혀(폐쇄) 있어야 한다는 것입니다. 즉, 기능을 추가(확장)할 때 기존 코드를 변경하지 않고 확장할 수 있어야 한다는 뜻입니다. 목적 확장에는 열려있어야 한다. 객체는 확장성을 가지고 있어야 한다. (언제든지 확장할 수 있다.) 새로운 변경사항이...

[SOLID 원칙] 객체지향 설계 5가지 원칙

SOLID 원칙이란, 객체 지향 프로그래밍(OOP)에서 소프트웨어 개발을 보다 효율적이고 유지 보수하기 쉽게 만드는 다섯 가지 설계 원칙입니다. 이 다섯 가지 원칙의 이름을 따서 SOLID 원칙이라고 부릅니다. 단일 책임 원칙 (Single Responsibility Principle, SRP) 단일 책임 원칙이란, 하나의 클래스는 하나의 책임만...

(백준/C++) 2485_가로수

2485번: 가로수 (acmicpc.net) 문제는 모든 가로수 간의 간격을 같게 만들기 위해서는 가로수를 어떤 간격으로 심어야 하는지를 묻는 문제입니다. 접근법 모든 간격을 동일하게 만들기 위해서는 공통의 간격을 찾아야 합니다. 이때, 가장 적게 심을 수 있는 공통 간격을 찾는 것이 중요합니다. 공통 간격을 찾는다는 것은 달리 말하자면, 현재 ...

데이터 표현 단위

컴퓨터는 단순히 0과 1로 표현되는 데이터들을 읽고 해석할 뿐이지만, 우리가 의미있는 데이터, 혹은 데이터들의 집합을 표현하기 위해서는 적절한 용어가 필요합니다. 예를 들어, ‘25,165,824 bit의 이미지를 표현하기 위한 데이터’이라고 표현하는 것보다는 ‘3MB의 이미지 파일’이라고 표현하는 것이 더 단순하고 의미 전달도 확실하기 때문이죠. ...

리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)

리틀 엔디안(Little Endian)과 빅 엔디안(Big Endian)은 컴퓨터가 메모리에 데이터를 저장하는 방법 두 가지를 말합니다. 컴퓨터가 메모리에 데이터를 저장할 때, 바이트(byte) 단위로 나누어 저장하게 됩니다. 하지만 데이터는 여러 바이트(int의 경우 4byte)로 구성되어 있기 때문에, 이 데이터를 각 주소에 나누어 저장하게 되...

구조체 패딩 (Structure Padding)

구조체 패딩(Structure Padding) 은 CPU가 데이터를 읽을 때, 읽기 쉬운 위치에 배치하기 위해 컴파일러가 구조체 멤버 사이에 추가 공간을 삽입하는 기법을 말합니다. 즉, 메모리 공간을 일부 희생하더라도 CPU가 더 쉽고 빠르게 데이터를 읽을 수 있도록 빈 공간을 만드는 것입니다. 예를 들어, 다음과 같이 구조체를 만들고 결과를 보도...