본문 바로가기

분류 전체보기

(40)
객체 지향 프로그래밍에 대한 이해 객체지향 프로그래밍(Object Oriented Programming) 자동차를 생각해보면 자동차는 엔진, 의자, 핸들 등 여러 부품들이 합쳐져 완전된 제품인 자동차가 된다. 이와 마찬가지로 소프웨어를 개발할 때는 엔진, 의자, 핸들 과 같은 '객체'라는 부품을 먼저 만든다. 이것들을 조립 해나가 소프트웨어 프로그램이 완성된다. 이러한 프로그램 제작 기법을 객체지향 프로그래밍이라고 할 수 있다. 객체 지향 프로그래밍을 좀 더 구체적으로 이해해보자. 객체란? 객체는 영어로 object라고 한다. 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있다. 이 때, 이 속성이 다른 객체와 식별이 가능하다. 예시로 자동차도 물리적으로 존재하며 식별 가능하므로 객체가 될 수 있다. 객..
[JAVA]JVM이 사용하는 메모리 영역(Runtime Data Area) java.exe로 JVM이 실행되고 JVM은 운영체제에서 할당받은 메모리 영역을 메소드, 힙, 스택 영역 등으로 세분하게 구분화해 사용한다. 이때 메모리 영역을 Runtime Data Area라고 부른다. Method Area(메소드 영역) 코드에서 사용되는 클래스(~.class)들을 클래스 로더로 읽어 클래스 별로 상수풀(runtime constant pool), 필드 데이터, 메소드 데이터, 메소드 코드, 생성자(construcotr) 코드 들을 분류해 저장한다. 이 영역은 JVM이 시작될 때 생성된다. 또한 모든 스레드가 공유한다. Heap Area(힙 영역) 힙 영역은 객체와 배열이 생성되는 영역이다. 이곳에서 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조한다. 만약 ..
[Java] JVM에 대한 이해와 설치 JVM은 자바 프로그램은 운영체제에서 바로 실행할 수 없다. 왜냐하면, 자바 프로그램은 기계어가 아니다. 즉, 기계인 컴퓨터가 해석하고 이해하고 실행할 수 없는 것이다. 그렇다면 자바 프로그램은 어떻게 컴퓨터에서 작동할 수 있을까? 기계인 컴퓨터가 해석하고 이해하고 실행할 수 있게 도와주는 가상의 운영체제가 필요하다. 이것이 바로 JVM이다. JVM은 Java Virtual Machine의 약자로 한글로 풀어 말해보자면 자바 가상 기계, 즉 ' 자바를 실행시키는 가상의 기계'라는 뜻이 된다. JVM이 있기에.. JVM이 있기 때문에 우리가 윈도우를 쓰던 맥 OS를 쓰던 리눅스를 쓰던 다양한 운영체제에 상관없이 자바 프로그램을 개발할 수 있다. 운영체제는 각기 프로그램을 실행하고 관리하는 방법이 다르다. ..
[알고리즘 문제/C++]백준 2503번 : 숫자 야구 문제 링크 : https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 이 문제는 프루트 포스(완전탐색) 알고리즘을 사용해 풀 수 있습니다. 코드 #include #include using namespace std; int find (int i, vector vec, int a); int main() { int qnum = 0; int result = 0; cin >> qnum; vector vec; for(int i = 0; i < qnum; i++)..
[알고리즘 문제/C++]백준 2231번 : 분해합 문제 링크 : https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 브루트 포스(완전탐색)을 활용해서 풀 수 있는 문제입니다. 코드 #include using namespace std; int main() { int num = 0, save = 0, sum = 0; cin >> num; for(int i = 1; i 0) { sum = su..
[알고리즘 문제/C++]백준 2212번 : 센서 문제 링크 : https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 K; for(int i = 0; i > in; Sencer.push_back(in); } sort(Sencer.begin(), Sencer.end(), less()); if(N
[알고리즘 문제/C++]백준 2178번 : 미로 탐색 문제 링크 : https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 너비 우선 탐색(BFS)을 활용해서 풀 수 있는 문제입니다. 코드 #include #include #include #include #include using namespace std; int N, M; int Maze[101][101]; bool visited[101][101] = {false, }; int dx[4] = {0, 0, -1, 1}; int dy[4] = {1, -1, 0, 0}; int main()..
[알고리즘 문제/C++]백준 1931번 : 회의실 배정 문제 링크 : https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 그리디 알고리즘을 활용해 풀 수 있습니다. 코드 #include #include #include #include using namespace std; bool sortbysec(const pair &a, const pair &b) { return (a.second < b.second); } int main() { int N, i, n1, n2, min, cnt = 0; scanf("%d", &N); vector v; for (i = 0; i < N; i++) { scanf("%d %d", &n1, ..