백준 11286 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 전 나의 생각 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 이러한 조건을 만족하는 절댓값 힙에 연산 N이 주어졌을 때, 출력되는 결과를 구해야 한다. 조건 - N(1≤N≤100,000) - ..
분류 전체보기
아이템 소모 기능 자체는 만들기 어렵지 않았지만 구조적으로 기능들을 어떤 곳에 넣어야 할지 고민을 많이 했다. 우선 대략적인 호출 순서를 적어보자면 동작에 의해 실행되는 부분 -> 인벤토리 컨트롤러의 아이템 소모 메서드 -> 인벤토리 모델의 아이템 소모 메서드 -> 아이템 패널의 실질적 소모 메서드 이런 형식으로 진행된다. 동작에 의해 실행되는 부분은 유저의 정보를 불러오고 있었고 정보 클래스에는 인벤토리의 정보가 들어있었다. 그래서 인벤토리에 쉽게 접근할 수 있었고 기능을 연결하도록 제작했다. 1. 동작에 의해 실행되는 부분 public class Consume : ItemFunction { public override void execute(GameObject user) { if (user.TryGe..
1. 데드락이란? 프로세스가 다른 프로세스로부터 자원을 얻고 다음 작업을 진행해야 하지만 자원을 얻지 못하고 다음 작업으로 진행하지 못하는 상황을 데드락이라고 한다. 예시로, 프로세스 1, 프로세스 2가 A, B라는 자원이 필요하고 프로세스 1은 A, 프로세스 2는 B를 할당 받았다고 가정하자. 그러면 프로세스 1은 B를 얻기 위해 프로세스 2에게 요청을 하고 프로세스 2는 A를 얻기 위해 프로세스 1에게 요청을 한다. 이에 따라, 프로세스 1과 2는 서로 요청만 할뿐이지 자원을 얻지 못하여 데드락 상태에 걸리게 된다. 2. 데드락의 조건 데드락의 조건으로 총 4가지가 있다. 상호 배제 - 자원은 한 번에 하나의 프로세스만이 사용할 수 있어야 한다. -> 한 번에 자원을 두개 이상의 프로세스가 사용할 수..
백준 11003 https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 풀이 전 나의 생각 N개의 수와 L이 주어질 때, D의 조건을 만족하며 저장된 수를 출력해야 한다. 조건 - 1 ≤ L ≤ N ≤ 5,000,000 - 109 ≤ Ai ≤ 109 과정 N의 범위를 보면 절대로 단순 2중 for문으로는 풀 수 없다는 것을 알 수 있다. 따라서 이를 해결하기 위해 우선순위 큐와 덱과 같은 자료구조를 사용해야 하는데 이 ..
백준 5430 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 풀이 전 나의 생각 정수 배열 연산 AC는 R(뒤집기)과 D(버리기)가 있다. 이때, 주어진 배열에 AC 연산을 연산을 적용하여 나오는 결과값을 구해야 한다. 조건 - 첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 최대 100이다. - 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. p의 길이는 1보다 크거나 같고, 100,000보다 작거나 같다. - 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. (0 ≤ n ..
1. CPU 스케줄러란? 준비큐에 있는 프로세스에게 CPU를 할당하는 방법을 CPU 스케줄러 라고 한다. 참고로 프로세스는 메모리와 CPU를 할당받아 사용된다. 2. CPU 스케줄러가 왜 필요할까? 만약 카카오톡을 왼쪽 화면에 켜놓고 대화를 보며 유튜브를 듀얼 모니터에 켜놓고 오른쪽 화면에는 게임을 켜놨다고 가정하자. 그럼 카카오톡, 유튜브, 게임을 동시에 하고 있는 것 처럼 느끼지만 사실 아니다. 이 3개의 프로그램은 CPU에서 각 하나 씩 잠깐 실행되는 단계를 정말 빠른 속도로 진행하고 있어서 인간의 눈으로는 인식을 못하고 동시에 실행되는 것 처럼 보이는 것이다. 그럼 동시에 실행되는 것 처럼 빠르게 프로그램을 CPU에 할당하기 위해 어떤 방법이 필요할텐데 이를 CPU 스케줄러 라고한다. 3. CPU..
백준 1021 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 풀이 전 나의 생각 양방향 순환 큐와 탐색 조건이 주어질 때 원하는 위치의 원소값을 얻기 위한 최소 계산 횟수를 구해야 한다. 조건 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다. 오른..
백준 20366 https://www.acmicpc.net/problem/20366 20366번: 같이 눈사람 만들래? 높이가 (2, 5), (3, 5)로 구성된 눈사람 둘을 만드는 것이 최적의 경우 중 하나이다. |7-8| = 1 다른 경우로는 (2, 9), (5, 5)로 두 눈사람을 만드는 경우가 있다. |11-10| = 1 www.acmicpc.net 풀이 전 나의 생각 N개의 눈덩이가 주어졌을 때 2개의 눈덩이로 만든 눈사람 2개의 지름 차이가 최소가 되는 경우를 구해야 한다. 조건 - N (4 ≤ N ≤ 600) - Hi (1 ≤ Hi ≤ 109) - i (1 ≤ i ≤ N) 과정 문제를 푸는 방법은 두 가지가 있다. 첫 번째로 2중 for문을 이용하여 푸는 방법이 있다. 하지만 여기서 주의할 ..