Angel Wing Heart
BOJ

[C++/백준] 11967번: 불켜기

문제 링크 11967번: 불켜기 풀이 BFS 문제 먼저 각 위치에서 스위치를 통해 켤 수 있는 위치는 인접 리스트와 같이 구현하였다. 방문한 자리를 표시하기 위한 visited와 불이 켜져있는 것을 표시하기 위한 room을 만들었다. 여느 BFS와 같이 queue를 이용해 구현한다. 현재 위치인 tx, ty에서 연결되어 있는 자리가 불이 꺼져있으면 불을 켜주면서 answer++해주고, 해당 위치가 방문했던 위치라면 queue에 push해준다. 상하좌우 진출하면서, 범위를 벗어나거나 방문했던 곳이라면 continue, 불만 꺼져있으면 visited 처리해준 뒤에, queue에 넣지는 않는다.(진출하지는 않음) 1번에서 불이 켜진다면 진출할 것이다. answer를 return한 뒤 출력한다. 코드 #incl..

운영체제

[운영체제] CPU Scheduling

인프런의 운영체제 공룡책 강의를 듣고 정리한 포스팅입니다. CPU 스케줄링 CPU 스케줄링은 멀티 프로그래밍 운영체제에서 기본 멀티 프로그래밍의 목적 CPU 효율을 극대화 여러 프로세스를 동시에 돌릴 수 있음 CPU bound(CPU를 많이 쓰는) 보다 I/O bound가 더 많으면 ⇒ 스케줄링을 통한 time sharing이 필요 CPU 스케줄러 CPU 스케줄러는 메모리에 로드된 프로세스 중 누구를 CPU에 할당할 것인지 선택해야 함 ⇒ ready 상태에 있는 프로세스 중 선택 프로세스 선택 ready 상태에 있는 프로세스들 중 선택하기 위해 queue를 만들 필요가 있음 FIFO Queue : First In, First Out Prority Queue : 우선순위가 높은 순으로 결정 선점형 / 비선..

BOJ

[C++/백준] 9657번: 돌 게임 3

문제 링크 9657번: 돌 게임 3 풀이 DP 문제 일단 돌을 1개, 3개, 4개 주을 수 있으니 dp[1] ~ dp[4]까지는 초기화해준다. dp에는 게임이 몇 번만에 끝나는지가 들어있다. 1개면 상근이가 1개를 줍고 끝나서 1, 2개면 상근이가 1개, 창영이가 1개 주워서 두 번만에 끝나니 2인 식이다. n까지 dp를 구하는데, 상근이가 1개를 주웠을 때 dp[i-1], 그니까 i-1개 남았을 때에서 상근이가 한 번 주운 1을 더해서 홀수가 되면 상근이가 이기는 거고, 아니면 창영이가 이기는 것이다. 첫빠따는 상근이기 때문에 dp[i-1], dp[i-3], dp[i-4]를 다 확인해보면서 홀수가 하나라도 나오면 상근이가 이길 것이다. 코드 #include using namespace std; int ..

Programmers

[프로그래머스/C++] 전화번호 목록

문제 링크 전화번호 목록 풀이 해시 문제라고 했는데 정렬로 풀었다. a 번호가 b 번호의 접두어라고 한다면, 정렬을 했을 때 반드시 a 번호가 b 번호 앞에 나오게 된다. 임시 string인 tmp에는 접두어라고 가정할 번호를 넣는다. tmp가 비어있으면 tmp를 해당 번호로 갱신. 해당 번호에서 접두어를 뽑았는데 tmp와 같지 않아도 갱신. 같으면 해당 번호는 tmp를 접두어로 가진다는 것을 의미하므로 answer를 false로 한다. 코드 #include #include #include using namespace std; bool solution(vector phone_book) { bool answer = true; sort(phone_book.begin(), phone_book.end()); s..

C++

[C++] 객체 생성 방법 (Stack, Heap)

객체 생성 방법 C++에서는 객체를 생성할 때 두가지 방법을 사용할 수 있다. 각 방법에 따라 객체가 할당되는 메모리 영역이 달라진다. 1. Stack에 할당 일반적인 변수와 같이 선언한다. Foo obj1 = Foo(5); Foo obj2(10); 2. Heap에 할당 new 키워드를 사용하여 선언한다. Foo* obj3 = new Foo(20); 운영체제 시간에 배웠듯이, Stack 메모리 영역은 변수를 선언한 스코프 영역을 벗어나면 자동으로 메모리가 해제되지만, Heap 메모리 영역은 프로그래머가 관리해야 하는 영역이므로 자동으로 해제가 되지 않는다. 위 코드의 obj3을 보면, new 키워드를 이용해 Heap 메모리에 객체를 할당하고 있다. 포인터는 Stack에 있고, 실제 객체의 데이터는 Hea..

조 히
slow cosmos