백준 1010번 , 1966번, 2839번

문딤·2022년 7월 15일
0

다리 놓기

풀이 방법
강의 서쪽이 N 개 동쪽에는 M 개
서쪽과 동쪽을 다리로 연결하는데 다리끼치 겹칠수 없는 경우의수

조합
N개의 숫자중에서 R개의 수를 순서없이 뽑는 경우
nCr = n-1Cr-1 + n-1Cr

소스코드

static으로 배열 박아놓고, 함수를 돌리는 것을 봄.
재귀적함수에 대해서 잘 몰라서 더 봐야할 것 같다.

알아 볼 것

재귀적 함수, 함수 알고리즘 만들어보기

참고

https://st-lab.tistory.com/194

========================================================================================================================

설탕 배달

노가다로 풀었는데, 깔끔하게 떨어지는 풀이가 있었다.

최대한 5kg 봉지로 구성.

n 이 4 또는 7 인 경우
n 이 5의 배수인경우 ( 5로 나눈 나머지가 0 인 경우 )
n 이 5의 배수 + 1 또는 5의 배수 + 3 인 경우 ( 5로 나눈 나머지가 1 또는 3 인 경우 )
n 이 5의 배수 + 2 또는 5의 배수 + 4 인 경우 ( 5로 나눈 나머지가 2 또는 4 인 경우 )

소스코드

위에 조건대로 만들었을 뿐.

알아 볼 것

그리디 알고리즘?

참고

https://st-lab.tistory.com/72

========================================================================================================================

프린터 큐

  1. 중요도에 따라 먼저 출력
  2. 맨 앞의 문서를 맨 뒤로 보내고, 이를 반복 => 중요도 높은 문서가 맨 앞에 배치

Queue?

FIFO 선입 선출 구조 먼저 들어온 것이 먼저 나가는 구조입니다.

(1) Enqueue : 큐 맨 뒤에 어떠한 요소를 추가, 마지막으로 온 손님에게 번호표 발부
(2) Dequeue : 큐 맨 앞쪽의 요소를 삭제, 창구에서 서비스를 받은 손님의 번호표를 대기목록에서 삭제
(3) Peek : front에 위치한 데이터를 읽음, 다음 서비스를 받을 손님이 누구인지 확인
(4) front : 큐의 맨 앞의 위치(인덱스), 다음 서비스를 받을 손님의 번호
(5) rear : 큐의 맨 뒤의 위치(인덱스), 마지막에 온 손님의 번호

소스코드

큐에서 탐색할 때 처음 poll() 된 원소가 가장 큰 경우와, 아닌 경우의 루트가 다르다.
만약 처음 poll() 된 원소가 가장 큰 경우는 해당 원소의 첫 위치가 M이랑 같은지를 비교해야하고,
만약 큐에 poll() 된 원소보다 중요도가 큰 원소가 있는 경우에는 그 원소 앞에 있던 원소들을 뒤로 보낸 뒤, 다시 첫 원소를 poll()하여 비교를 큐 안에 poll() 된 원소보다 중요도가 큰 원소가 있는지를 검사해야 한다.

알아 볼 것

큐 알고리즘 만들어 보기

참고

https://st-lab.tistory.com/201

profile
풀스택개발자가 될래요

0개의 댓글