탈주범 검거

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpLlKAQ4DFAUq

소요시간 1시간. BFS 문제이다. 쉬운 문제이다. Queue에 넣어야 하는 경우의 수의 조건에서 시간이 오래 걸렸다.

더럽게 코드를 작성했다. 더 나은 방법은 없을까?

풀이

  1. map에 터널 상태를 저장한다.
  2. 현재 위치에서 이동 가능한 위치를 큐에 넣는다. (이동 가능한 위치는 터널 상태를 보고 파악한다)
  3. 큐에서 pop한 위치에서 2번을 반복한다.
  4. depth가 문제에서 주어진 시간이 되었을 때, 큐에 넣었던 위치 개수를 출력한다.
Read more

활주로 건설

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeW7FakkUDFAVH

경우의 수를 나눈 후 조건에 맞게 짜려고 하였다. 해설을 보고 DFS로 풀면 쉽게 풀 수 있다는 것을 알았다.

풀이

  1. 모든 행과 열을 차례대로 체크한다.

  2. 현재 위치와 다음 위치를 비교한다.

    • 같은 높이인 경우 : 다음 위치 부터 체크

    • 오르막인 경우 : 현재 위치 기준해서 왼쪽으로 경사로 둘 수 있는지 체크

    • 내리막인 경우 : 현재 위치 기준해서 오른쪽으로 경사로 둘 수 있는지 체크

    • 그 이외의 경우 : 이번 행이나 열은 실패

코드

Read more

줄기세포배양

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRJ8EKe48DFAUo&categoryId=AWXRJ8EKe48DFAUo&categoryType=CODE

풀이

  1. 전체 map size를 450 * 450 으로 하고 초기 위치를 i+175, j+175로 하였다. ( 왜?? )

  2. 생명력을 저장하고, 활성 상태를 체크하기 위해 map(450)(450)(0) 에는 생명력을, map(450)(450)(1) 에는 생명력*2를 저장한다. map(450)(450)(1) < map(450)(450)(0) 이 되면 활성상태가 되므로, 확장시킨다.

  3. 생명력 수치가 높은 줄기 세포를 먼저 확장 시키기 위해, 생명력에 따른 Queue를 저장하는 배열을 생성한다.

    arr[1] : 생명력이 1인 줄기 세포의 좌표를 저장하는 Queue

    arr[2] : 생명력이 2인 줄기 세포의 좌표를 저장하는 Queue

    arr[10] : 생명력이 10인 줄기 세포의 좌표를 저장하는 Queue

  4. 생명력이 10인 큐 ~ 생명력이 1인 큐를 순차적으로 확인한다.

  5. 큐에 저장되어 있는 줄기세포를 하나씩 remove하여 활성화되어있는지 체크하여 확장한다.

Read more

CPU Scheduling

CPU and I/O Bursts in program execution 이란 ?

CPU-burst time 의 분포는 ?

프로세를 분류하면 ?
  1. I/O-bound process
    CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job 입니다.
  2. CPU-bound process
    계산 위주의 job 입니다.
CPU 스케쥴링이 왜 필요한가요?
  1. IO 대기, Memory stall과 같은 CPU idle time 을 최소화하여 CPU 자원의 활용을 극대화하기 위해 필요합니다.
  2. 여러 종료의 job(process)이 섞여 있기 때문에 CPU 스케쥴링이 필요하다.
CPU 스케쥴링을 위해 Ready Queue 구현은 어떻게 하나요?

스케쥴링 알고리즘에 따라 FIFO, Queue, tree, Linked List 등을 사용할 수 있습니다.

Read more