1. OOP란? Object-Oriented Programming, 객체 지향 프로그래밍을 의미하며 이는 프로그램들을 객체들의 모임으로 간주하고 객체들 간의 상호작용을 중심으로 설계하고 구현하는 방법론이다. 2. OOP를 사용하는 이유? 프로램을 보다 모듈화되고 유지보수가 용이하며 재사용성이 높은 코드를 개발하기 위해서다. 3. OOP의 종류 - 클래스와 객체 클래스는 객체를 만들기 위한 설계도며, 객체의 속성과 동작을 정의할 수 있다. 객체는 클래스의 인스턴스이며 클래스의 속성을 가지고 있다. - 캡슐화 데이터와 메서드를 하나의 단위로 묶어 객체의 내부 구현을 외부로부터 숨기고 오직 정의된 메서드를 통해서만 객체에 접근할 수 있도록 하는 것이다. - 상속 기존 클래스의 속성과 메서드를 상속받는 하위 클..
전체 글
오늘 배운 경험을 회고하며 레벨 업 하는 곳입니다. 모르는 것은 배우고 아는 것은 베풀 수 있는 개발자로 성장하겠습니다!백준 2230 https://www.acmicpc.net/problem/2230 2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net 풀이 전 나의 생각 N개의 정수로 이루어진 수열 A에 대하여 두 수를 골랐을 때 그 차이가 M이상이면서 제일 작은 경우를 구해야 한다. 조건 - 1 ≤ N ≤ 100,000 - 0 ≤ M ≤ 2,000,000,000 - 0 ≤ |A[i]| ≤ 1,000,000,000 과정 N, M, A[i] 모두 int형의 범위를 넘지 않기 때문에 데이터 타입을 int로 설정해준..
1. 바이트 정렬이란? 데이터가 메모리에 배치될 때 해당 데이터 구조의 바이트 경계에 맞추어 정렬되는 것을 의미한다. 2. 바이트 정렬을 사용하는 이유는? 현재 MyStruct라는 구조체에 있는 데이터가 메모리에 배치된다면 어떤 과정으로 메모리에 배치되는지 확인해보자. 기본적으로 데이터가 배치될 메모리의 크기는 구조체에 있는 가장 큰 바이트의 크기로 설정된다. ->현재 long타입의 8바이트 크기가 가장 크기 때문에 8바이트 메모리가 설정된다. 1. byte(1바이트) 부분에 8바이트 메모리가 부여된다. -> 나머지 공간은 1바이트가 채워진 7바이트 2. 이전 8바이트 메모리의 공간은 7바이트 밖에 남지 않았기 때문에 다시 long부분에 8바이트 메모리를 부여한다. -> 나머지 공간은 모두 채워졌기에 0..
백준 1477 https://www.acmicpc.net/problem/1477 1477번: 휴게소 세우기 첫째 줄에 현재 휴게소의 개수 N, 더 지으려고 하는 휴게소의 개수 M, 고속도로의 길이 L이 주어진다. 둘째 줄에 현재 휴게소의 위치가 공백을 사이에 두고 주어진다. N = 0인 경우 둘째 줄은 빈 줄 www.acmicpc.net 풀이 전 나의 생각 고속도로에 있는 휴게소의 위치 N 개가 주어진다. 이때 휴게소 M 개를 추가적으로 설치할 때 휴게소가 없는 구간의 길이의 최댓값을 최소로 하는 값을 구해야 한다. 조건 - 0 ≤ N ≤ 50 - 1 ≤ M ≤ 100 - 100 ≤ L ≤ 1,000 - 1 ≤ 휴게소의 위치 ≤ L-1 - N+M < L - 모든 휴게소의 위치는 중복되지 않음 - 입력으로..
1. 전략 패턴이란? 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘을 수정해서 쓸 수 있게 해주는 패턴이다. 2. 전략 패턴을 사용하는 이유? 오리의 종류에는 모형 오리, 장난감 오리, 청둥오리... 엄청나게 많은 오리가 존재한다. 그래서 오리라는 클래스를 만들어서 모든 종류의 오리가 공통된 기능을 상속받도록 제작할 것이다. 오리 클래스에는 오리가 가져야 할 기능인 울음 소리 메서드 Quack과 나는 메서드 Fly를 작성했다. 그렇게 오리의 종류 10만개에 오리 클래스를 상속 시켰고 Fly 메서드와 Quack 메서드를 오버라이드 해서 모두 기능을 작성했다. 여기서 생기는 1차적인 문제는 중복된 코드가 굉장히 많을 것이다. 나는 기능 3만개, 날지 못하는 기능 3만개, 로켓으로 나는 기능 4만개...이런..
백준 2512 https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 풀이 전 나의 생각 예산이 담긴 M의 배열이 주어질 때 국가예산의 총액에서 최대로 예산을 배정할 수 있는 상한액을 구해야한다. 조건 - N은 3 이상 10,000 이하 - N개의 정수는 모두 1 이상 100,000 이하 - M은 N 이상 1,000,000,000 이하 과정 N과 M은 10억 이하기 때문에 데이터 타입은 int로 설정한다. 지방의 수 N이 10000이 주어지고 모..
1. IPC 란? 다른 프로세스끼리 통신하고 데이터를 교환할 수 있게 해주는 기술이다. 2. IPC를 왜 사용할까? 프로세는 생성될 때 메모리 공간 등을 복사하여 별도의 자원을 할당하기 때문에 기본적으로 독립적인 메모리 공간을 가지고 있다. 따라서 프로세스는 직접적으로 다른 프로세스에 접근할 수 없는데 IPC는 프로세스 간의 데이터 공유를 가능하게 해준다. 결론은 독립적인 프로세스의 정보들을 서로 공유할 수 있게 해주는 기술이 IPC다. 3. IPC의 종류 - 공유 메모리(Shared Memory) 여러 프로세스가 메모리 영역으로 공유하여 데이터를 읽고 쓰는 기술 데이터를 복사하지 않아도 되서 빠른 접근이 가능하지만 충돌로 인한 오류 방지 동기화 메커니즘이 필요하다. - 메시지 큐(Message Queu..
백준 12012 https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 풀이 전 나의 생각 수열 A가 주어졌을 때 가장 긴 증가하는 부분 수열을 구해야한다. 조건 - (1 ≤ N ≤ 1,000,000) - (1 ≤ Ai ≤ 1,000,000) 과정 Ai는 양수이며 100만의 크기를 갖기 때문에 Ai를 담는 배열의 데이터 타입은 int로 설정한다. 수열 A의 크기 N은 100만이지만 2중 for 문만을 이용한 탐색을 진행한다면 100만 * 100만의 계..