전체 글
-
Java 기본 지식 (JVM, JRE, JDK, GC)Development Knowledge/JAVA 2020. 5. 8. 10:05
✅ Java ◾ 썬 마이크로시스템즈의 제임스 고슬링이 개발한 객체 지향 프로그래밍 언어이다. 웹과 모바일 앱 개발에 많이 사용된다. 문법적인 특성이 C 언어와 비슷하다. ◾ Java로 개발된 프로그램은 CPU나 운영체제의 종류에 상관없이, JVM을 설치할 수 있는 시스템 어디서나 실행될 수 있다. 즉, Java로 작성된 프로그램은 플랫폼 독립적이다. ◾ 프로그램은 본래 운영체제에 따라 구현 방법이 달라진다. 자바 프로그램은 JVM 위에서 실행되기 때문에 같은 코드의 프로그램으로 다양한 운영체제에서 실행될 수 있다. (하지만 운영체제에 따른 알맞은 JVM이 필요하다.) ✅ Java Compiler, Java Bytecode ? 📋 몇 가지 Java관련 용어를 살펴보자 ◾ 자바 소스파일 (*.java) - ..
-
[프로그래머스] 후보키Problem Solving/Programmers 2020. 5. 7. 15:08
✔️ 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✔️ 풀이 - 릴레이션(DB 테이블)이 주어지고, 후보키의 최대 개수를 구하는 문제이다. - 후보키는 유일성과 최소성을 만족해야한다. - 유일성은 set을 활용하여 컬럼의 중복여부를 확인하는 방법으로 체크했다. - 최소성은 후보키를 이루는 속성들의 부분 집합중 유일성을 만족하는 집합이 있는지 확인하는 방법으로 체크했다. 후보키를 이루는 속성들의 모든 부분 집합에서 유일성을 만족시키는 집합이 있..
-
[프로그래머스] 오픈채팅방Problem Solving/Programmers 2020. 5. 4. 18:19
✔️ 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✔️ 풀이 - map을 사용한다. - 채팅방에 들어오거나(Enter) 닉네임을 바꿀때(Change) 유저 아이디를 key 값으로 사용해서 닉네임을 바꿔준다. ✔️ 문제 회고 - map을 이용하는 문제였다. - istringstream을 사용해서 공백을 기준으로 문자열을 손쉽게 자를 수 있다. 👨🏻💻 소스 코드 #include #include #include using namespace std..
-
[프로그래머스] 프렌즈 4블록Problem Solving/Programmers 2020. 5. 3. 22:59
✔️ 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ✔️ 문제 이해 1. 문제 조건대로 구현하면된다. 2x2 공간에 같은 모양의 블록이 있으면 터뜨리고, 빈공간은 위에서 아래로 채운다. ✔️ 설계 - 2x2 공간에 같은 모양의 블록이 있으면 check 배열에 체크해둔다. ✔️ 문제 회고 - 2x2 위치에 같은 모양의 블록이 있는지 확인하는 작업을 재귀로 구현했더니 시간초과가 났고, 구현이 복잡해졌고, 오답이 나왔다. - 2x2 위치라고 명시되어..
-
[OS] Virtual MemoryComputer Science/Operation System 2020. 5. 3. 15:47
✔️ 가상 메모리 ( Virtual Memory ) ◾️ 가상 메모리란 RAM을 관리하는 방법이다. 각 프로세스(프로그램)에 실제 물리적 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 말한다. ◾️ 가상 메모리는 크게 나누어 Paging 방식과 Segment 방식이 있다. ◾️ 대부분의 시스템은 Paging 기법을 사용한다. ◾️ 가상 메모리는 운영체제가 관리한다. ◾️ 논리적 메모리 주소를 물리적 메모리 주소로 변환하는 것은 하드웨어가 한다. ◾️ 이 챕터에서는 Paging 기법을 사용하는 것으로 가정한다. ✔️ Demand Paging ◾️ Demand Paging이란 Page 요청이 있을 때, Page를 메모리에 올리는 것을 말한다. ◾️ 프로세스(프로그램)이 실행될 때 해당 프로세스를 구성..
-
[백준] 10971 외판원 순회 2Problem Solving/Baekjoon Online Judge 2020. 5. 1. 15:17
✔️ 문제 링크 https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j로 가기 위한 비용을 나타낸다. 항상 순회할 수 있는 경우만 입력으로 주어진다. www.acmicpc.net ✔️ 문제 이해 1. N개의 도시가 존재하고, 각 도시는 도로로 연결되어 있다. 각 도시간에 이동할때 비용을 지불해야한다. 2. W[i][j]는 도시 i에서 도시 j로 가기 위한 비용을 나타낸다. 비용은 대칭적이지 않다. 즉, W[i][j] 는 W[j][i]와..
-
[백준] 11723 집합Problem Solving/Baekjoon Online Judge 2020. 4. 29. 16:52
✔️ 문제 링크 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net ✔️ 문제 이해 1. 조건에 따른 구현을 하면된다. ✔️ 설계 1. check 배열을 이용해서 풀 수 있고, set으로도 풀 수 있다. 2. 하지만 비트마스크로 간단히 풀 수 있다. ✔️ 문제 회고 1. 비트마스크 연산에 대한 개념을 알고 있으면 매우 쉽게 풀 수 있다. 👨🏻💻 소스 코드 #include #include #include #include #include using namespace std; int m..
-
Sieve of EratosthenesComputer Science/Data Structure and Algorithm 2020. 4. 28. 23:46
✔️ 에라토스테네스의 체 ◾ 숫자들을 순차적으로 접근하면서, 각 숫자의 배수에 해당하는 숫자들을 걸러냄으로서 소수를 찾아내는 방법이다. ◾ 참고로 에라토스 테네스의 체 시간복잡도는 O(n log log n) 이다. (https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes) 💾 소스 #include #include using namespace std; const int MAX = 1000; int main() { vector prime; bool isPrime[MAX + 1]; memset(isPrime, true, sizeof(isPrime)); for (int i = 2; i