Study/CS
객체지향 프로그래밍
면접에서 가장 기본적인 질문 중에 하나, "객체지향 프로그래밍이 뭔가요?". 정말 기본 중의 기본이지만, 막상 대답하고자 하니 말문이 막혔다. 꼬리에 꼬리를 무는 질문들이 쏟아져 나오는 질문이니 만큼, 제대로 알아둘 필요가 있는 주제인 것 같다. 이번 기회에 한번 확실하게 짚고 넘어가도록 하자. 객체지향 프로그래밍 (Object Oriented Programming) 객체지향 프로그래밍이란? 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 이를 활용하여 프로그래밍하는 것을 의미한다. 기존의 프로그램이 순차적으로 동작하는 것과는 다르게 객체들 간의 유기적인 상호작용을 통해서 프로그램이 동작하는 것이 특징이다. 대표적인 객체지향 프로그래밍 언어로는 Java가 있고 대표적인 절차적 프로그래밍 언어로는 ..
[자료구조] 대표적인 자료구조 정리
면접을 보면서 느꼈던 점은 자료구조와 알고리즘은 기본적인 것이라고 생각하는데, 막상 대답하고자 하면 명확하지 않았던 경우가 많았던 것 같다. 이번 기회에 확실히 공부해서 기초를 단단히 해서 보다 논리적으로 문제를 해결하고 싶다. 저번 글에서 자료구조에 대한 전반적인 내용을 다뤘다면, 이번에는 대표적인 자료구조들을 살펴보고 각각의 장단점과 특징을 비교해보자. 배열 (Array) 배열은 가장 기본적인 데이터 구조다. 배열은 인덱스(Index)와 인덱스에 해당하는 요소(Element)로 구성된다. 특징 길이가 고정되어 생성된다. (정적 메모리 할당) Random Access를 지원한다. 즉, 인덱스를 통해서 각 요소에 직접 접근할 수 있는 특징이 있다. 배열은 논리적 순서와 물리적 순서가 일치한다. 인접한 메..
[자료구조] 자료구조? 왜 그렇게 중요할까
자료구조란? 자료구조를 왜 알아둬야 할까? 자료구조는 컴퓨터과학에서 알고리즘과 함께 가장 중요한 기초이론이다. 왜 중요할까? 정의를 한번 살펴보면, 자료구조란 데이터에 편리하게 접근하고, 변경하기 위해서 데이터를 저장하거나 조직하는 방법을 말한다. 다시 말해서, 데이터를 얼마나 효율적으로 저장 관리하고 메모리를 절약하거나 실행시간을 단축시키는 등에 목적을 두고 있다는 것이다. 자료구조의 특징 작업의 효율성, 추상화, 재사용성을 증가시키기 위하여 상황에 따른 적절한 자료구조를 선택할 필요가 있다. 대규모 데이터를 관리 및 활용하는 경우에는 특히 더 중요하다고 볼 수 있다. (1) 효율성 : 상황에 맞는 자료구조를 사용하면 데이터 처리의 효율성이 높아진다. 예를 들어, 사람의 이름과 전화번호 쌍의 데이터가 ..
Software 1.0 vs Software 2.0
Software 1.0과 Software 2.0은 일종의 프로그래밍의 기술의 방법이다. Software 2.0이 나온 이후로 딥러닝은 엄청난 속도로 발전했다. 그렇다면 Software 1.0과 Software의 2.0이란 무엇이고 그 차이는 무엇일까? 먼저, Software 1.0의 정의는 다음과 같다. The “classical stack” of Software 1.0 is what we’re all familiar with — it is written in languages such as Python, C++, etc. It consists of explicit instructions to the computer written by a programmer. By writing each line of ..