일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로콘 갈림현상
- 백트래킹
- Python
- 백준
- 알고리즘
- 리트코드
- Ultimate Search
- 제노블레이드 2
- 프로그래머스
- Github
- 취준
- GitHub Desktop
- 네이버 검색 시스템
- DP
- algorithm
- 프로콘
- 알고리즘 종류 정리
- programmers
- SRE
- 격리수준
- baekjoon
- Algorithmus
- ASF-110
- python3
- C++
- 자소서
- Pro-Con
- LeetCode
- 코딩테스트
- git
- Today
- Total
목록전체 글 (76)
산타는 없다
프로세스 프로세스는 실행되고 있는 프로그램의 인스턴스라고 생각할 수 있습니다. 즉, 실행중인 프로그램을 의미하며, 작업(job), 태스크(Task)라고도 합니다. (인스턴스[instance] : 컴퓨터 저장공간에서 할당된 실체) 이러한 프로세스는 운영체제로 부터 CPU 시간 메모리 등의 시스템 자원을 할당받아 실행됩니다. 운영체제는 자원을 할당해준 프로세스를 관리하기 위해 PCB(Process Control Block)를 생성하여 저장하고 프로세스가 완료되면 제거합니다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수가 자료구조에 접근할 수 없습니다. 만약, 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간 통신(IPC, inter-process communi..
공유 자원의 동기화 프로세스 안에서 생성된 스레드들은 코드, 데이터, 힙 메모리 영역을 공유하고 스택 영역만 스레드 별로 고유하게 가지게 됩니다. 스레드가 서로 데이터를 공유할 수 있다는 점은 장점이긴 하지만 두 스레드가 같은 자원을 동시에 변경하는 경우에는 문제가 발생할 수 있습니다. 때문에 공유 자원에 대한 접근을 제어하기 위한 동기화 처리를 하게 됩니다. MFC Api에선 CCriticalSection 클래스를 제공하여 동기화 처리를 할 수 있습니다. 이런 동기화 처리는 여러 스레드가 같은 객체를 동시에 실행하는 것을 방지해 줍니다. 세밀하게 제어한다면 lock(or monitor)를 사용하여 접근을 동기화 할 수 있습니다. 특정 시점에 락을 쥐고 있을 수 있는 스레드는 하나뿐이며 따라서 해당 공유..
문제 원문 조건 시간 제한 : 2초 메모리 제한 : 256 MB 문제 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그러다가 평화로운 마을에 가게 되었는데, 그곳에서는 알 수 없는 일이 벌어지고 있었다. 마을은 N개의 집과 그 집들을 연결하는 M개의 길로 이루어져 있다. 길은 어느 방향으로든지 다닐 수 있는 편리한 길이다. 그리고 각 길마다 길을 유지하는데 드는 유지비가 있다. 마을의 이장은 마을을 두 개의 분리된 마을로 분할할 계획을 가지고 있다. 마을이 너무 커서 혼자서는 관리할 수 없기 때문이다. 마을을 분할할 때는 각 분리된 마을 안에 집들이 서로 연결되도록 분할해야 한다. 각 분리된 마을 안에 있는 임의의 두 집 사이에 경로가 항상 존재해야 한다는 뜻이다. 마을에는 집이 하나 이..
일반적으로 상속 시 오버라이딩 할 메소드엔 virtual을 붙여서 프로그램이 파생 클래스의 메소드를 호출할 수 있도록 알려줍니다. 하지만 이를 붙이지 않거나 객체를 new로 생성하지 않았을 때는 어떻게 될까요? virtual을 붙이지 않았을 때 virtual을 붙이지 않았을 때는 참조형이나 포인터형에 기초하여 메서드가 호출되기 때문에 기초 클래스의 메서드가 실행됩니다. 객체를 new로 생성하지 않았을 때 객체를 new로 생성하지 않았을 때는 무조건 객체형을 따라가게 됩니다. 객체형에 들어간 객체가 파생 클래스여도 기초 클래스의 메서드가 실행되게 됩니다. 테스트 기초 클래스와 class people { private: string name; int age; public: people(string input..
C++에서 클래스의 상속은 객체 지향 언어의 목적인 코드의 재사용성을 높여줍니다. 예를 들어 과일 클래스와 사과, 바나나 클래스가 있을 경우 과일이 가지고 있는 특징을 과일 클래스에 정의하고 사과와 바나나는 과일 클래스를 상속받아 이미 작성된 과일의 특징을 다시 작성하지 않고 그대로 사용할 수 있습니다. 이런 상속에서 기초 클래스와 파생 클래스의 생성자, 소멸자의 실행 순서를 알아보겠습니다. 결론부터 말하면 생성자 : 기초 -> 파생 소멸자 : 파생 -> 기초 순서로 실행됩니다. 생성자 : 기초 -> 파생 정확히 말하면 파생 클래스를 선언이 될 때 기초 클래스의 생성자가 실행이 되고 그다음 파생 클래스의 생성자가 실행이 됩니다. 그 이유는 파생 클래스의 객체를 생성할 때, 먼저 기초 클래스의 객체를 생성..
문제 원문 조건 시간 제한 : 2초 메모리 제한 : 128 MB 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+5+7과 같은 표현도 적합하지 않다. 자연수가 주어졌을 때, 이 자연수를 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 구하..
문제 원문 조건 시간 제한 : 2초 메모리 제한 : 128 MB 문제 45656이란 수를 보자. 이 수는 인접한 모든 자리수의 차이가 1이 난다. 이런 수를 계단 수라고 한다. 그럼, 오늘도 역시 세준이는 0부터 9까지 모든 한 자리수가 자리수로 등장하면서, 수의 길이가 N인 계단 수가 몇 개 있는지 궁금해졌다. N이 주어질 때, 길이가 N이면서 0에서 9가 모두 등장하는 계단 수가 총 몇 개 있는 지 구하는 프로그램을 작성하시오. (0으로 시작하는 수는 없다.) 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 예제 풀이 메모이제이션을 활용한 DFS로 해결하였습니다. 그냥 DFS로만..
문제 원문 조건 시간 제한 : 2초 메모리 제한 : 128 MB 문제 세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다. 분할의 개수의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열이 주어진다. 이 문자열은 알파벳 대문자로만 이루어져 있고, 최대 길이는 2,500이다. 출력 첫째 줄에 팰린드롬 분할의 개수의 최솟값을 출력한다. 예제 풀이 처음엔 백트래킹을 활용한 브루트 포스로 풀어봤으나 역시 시간 초과가 발생합니다. 결국 핵심은 입력받은 문자열에 팰린드롬이 어느 위치에 있는지를 계산하는 것입니다. 예전에 풀었던 ..