본문 바로가기

분류 전체보기

(84)
동적 바인딩이란 동적 바인딩은 프로그래밍에서 사용되는 개념으로, 프로그램 실행 시간에 메소드나 속성이 연결되는 것을 의미합니다. 정적 바인딩과는 달리, 동적 바인딩은 프로그램이 실행될 때까지 메소드나 변수의 타입이 결정되지 않습니다. 이것은 객체 지향 프로그래밍에서 중요한 특징 중 하나로, 같은 메소드 호출이라도 실행되는 객체의 타입에 따라 다른 동작을 수행할 수 있게 합니다. 이를 통해 프로그램의 유연성이 증가하며, 다형성을 구현하는 데 핵심적인 역할을 합니다. 쉽게 설명하기 마술사가 트릭을 보여줄 때, 관객은 마술사가 어떤 마술을 사용할지 미리 알 수 없습니다. 마술이 시작되고 나서야 마술사가 어떤 마술을 사용하는지 알게 됩니다. 동적 바인딩도 비슷해요. 프로그램이 실행되기 전에는 프로그램이 어떤 메소드를 사용할지 ..
추상화 또는 추상화 레벨이란 추상화는 복잡한 현실이나 개념을 단순화하여 이해하기 쉽게 만드는 과정입니다. 프로그래밍에서 추상화는 복잡한 코드나 데이터 구조를 간단하고 명확한 방식으로 표현하는 것을 의미합니다. 이를 통해 프로그래머는 세부적인 구현 부분에 대해 걱정하지 않고, 프로그램의 핵심적인 부분에 집중할 수 있습니다. 추상화 레벨은 이러한 단순화의 정도를 나타냅니다. 높은 추상화 레벨은 더 많은 세부 사항을 숨기고, 핵심 개념에 집중하는 반면, 낮은 추상화 레벨은 더 많은 세부 사항을 드러내고 구체적인 구현에 초점을 맞춥니다. 쉽게 설명하기 추상화는 큰 그림을 보는 것과 같다고 말할 수 있습니다. 예를 들어, 여러분이 그림을 그릴 때, 먼저 전체적인 모양과 구조를 그리고, 그 다음에 세부적인 부분을 채워 넣습니다. 처음에는 나무..
함수형 프로그래밍이란 함수형 프로그래밍은 컴퓨터 프로그래밍의 한 방식으로, 계산을 수학적 함수의 평가로 취급하고, 상태 변경이나 변경 가능한 데이터를 피합니다. 이 방식은 '순수 함수'라는 개념을 중요시하는데, 순수 함수는 동일한 입력에 대해 항상 동일한 출력을 제공하고, 외부 상태를 변경하지 않습니다. 함수형 프로그래밍은 프로그램을 작성할 때, 함수들의 조합과 연속된 변환을 통해 로직을 구성합니다. 이 접근 방식은 코드의 가독성과 유지 보수성을 높이며, 병렬 처리와 테스트가 용이한 프로그램을 만들 수 있습니다. 쉽게 설명하기 레시피를 따라 음식을 만드는 것과 비슷하다고 말할 수 있습니다. 레시피에는 재료들을 어떻게 조합해서 음식을 만드는지 단계별로 쓰여 있습니다. 함수형 프로그래밍에서는 프로그램을 '레시피'처럼 만듭니다. ..
객체 지향 프로그래밍이란 객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 컴퓨터 프로그래밍의 한 방식으로, '객체'라는 기본 단위를 중심으로 프로그램을 구성합니다. 이 방식에서 객체는 데이터(속성)와 그 데이터를 처리하는 함수(메소드)를 결합한 것입니다. 객체 지향 프로그래밍은 프로그램을 현실 세계의 객체들로 모델링하여 더 직관적이고 유지보수가 용이한 코드를 작성할 수 있게 합니다. 이 방식은 코드의 재사용성, 확장성 및 유연성을 높이는 데 도움을 줍니다. 주요 개념으로는 클래스, 상속, 캡슐화, 다형성 등이 있습니다. 쉽게 설명하기 레고 블록으로 무언가를 만드는 것과 비슷하다고 말할 수 있습니다. 레고 블록은 각각의 작은 부품으로, 여러분이 원하는 대로 조합하여 다양한 형태의 구조물을 만들 ..
절차적 프로그래밍이란 절차적 프로그래밍은 명령형 프로그래밍의 한 형태로, 프로그램을 일련의 절차나 루틴(함수)으로 나누어 구성합니다. 이 방식은 프로그램의 실행 과정을 연속적이고 순차적인 단계로 나타내며, 각 단계는 특정한 작업을 수행합니다. 절차적 프로그래밍에서는 코드를 작은 부분으로 나누어 재사용성과 구조화를 높이고, 이를 통해 프로그램의 복잡성을 관리합니다. 대표적인 절차적 프로그래밍 언어로는 C언어가 있습니다. 쉽게 설명하기 마치 큰 프로젝트를 작은 단계별 작업으로 나누는 것과 비슷하다고 말할 수 있습니다. 예를 들어, 학교 과제를 할 때, 여러분은 조사하기, 글쓰기, 그림 그리기와 같은 여러 단계로 나누어 일을 합니다. 각 단계는 자신만의 작업을 가지고 있고, 이 작업들을 순서대로 하면 전체 과제가 완성됩니다. 절차..
명령형 프로그래밍이란 명령형 프로그래밍은 컴퓨터 프로그래밍의 한 방식으로, 프로그램이 어떻게 동작해야 하는지를 단계별로 명시합니다. 이 방식에서는 프로그래머가 명령어들을 순서대로 작성하여 컴퓨터에게 정확한 작업 순서를 알려줍니다. 명령형 프로그래밍은 '어떻게(How)'에 초점을 맞추며, 각 단계가 명확하게 기술되어 있어야 합니다. 프로그램의 상태를 변경하거나, 데이터를 조작하는 구체적인 명령들을 포함하는 것이 특징입니다. 쉽게 설명하기 명령형 프로그래밍은 마치 레고 조립 설명서와 같습니다. 레고를 조립할 때, 설명서에 나온 순서대로 블록을 하나씩 조립해야 합니다. 각 단계를 따라가면서 무엇을 해야 하는지 정확히 알 수 있습니다. 명령형 프로그래밍도 비슷해요. 프로그래머는 컴퓨터에게 정확히 무엇을 해야 하는지, 어떤 순서로 해..
선언형 프로그래밍이란 선언형 프로그래밍은 컴퓨터 프로그래밍의 한 방식으로, '어떻게(How)'가 아닌 '무엇(What)'에 집중합니다. 이 방식은 프로그래머가 알고리즘의 단계를 자세히 기술하는 대신, 컴퓨터에 원하는 결과가 무엇인지를 선언합니다. 즉, 명령형 프로그래밍에서처럼 명령을 나열하는 대신, 결과를 얻기 위해 필요한 조건이나 규칙을 정의합니다. 이 접근법은 프로그래밍을 더 직관적이고 간결하게 만들 수 있습니다. 쉽게 설명하기 선언형 프로그래밍은 마치 레스토랑에서 음식을 주문하는 것과 비슷합니다. 레스토랑에서는 요리사에게 '피자를 주세요'라고 말하면 되고, 피자를 만드는 방법을 자세히 알려주지 않아도 됩니다. 마찬가지로 선언형 프로그래밍에서는 컴퓨터에게 무엇을 원하는지만 말하면 돼요. 예를 들어, '이 목록에서 가장 큰..
[해커랭크] Picking Numbers 문제링크 Picking Numbers | HackerRank What's the largest size subset can you choose from an array such that the difference between any two integers is not bigger than 1? www.hackerrank.com 주어진 정수 배열에서, 어떤 두 요소 간의 절대 차이가 1 이하인 가장 긴 부분 배열을 찾아야 합니다. 예를 들어, 두 부분 배열 [1, 1, 2, 2, 4, 4, 5, 5, 5]와 [4, 4, 5, 5, 5]가 있을 때, 최대 길이를 가진 부분 배열은 요소가 5개인 배열입니다. 풀이 : function pickingNumbers(a) { let result = 0 const f..