본문 바로가기

전체 글548

백준 2696 c++ "중앙값 구하기" -PlusUltraCode- https://www.acmicpc.net/problem/2696[필자 사고]재미난 문제다. 우선순위 큐를 이용하여 중앙 값 구하기..left 와 right 큐가 있다.left는 내림차순으로 정렬하고 right은 오름차순으로 정렬하면 된다.그 다음 left가 비었거나 top수가 현재 입력된 수보다 크거나 같은경우에만 넣는다.나머지는 right 에 넣고 만약 right수가더 많아지면 left에 넣고 left가 더 right +1 보다 많아지면 right에 넣는 형태로 코드를 해결했따. 아래는 자세한 코드 해설이다.[코드 해설]문제 설명주어진 수열에서 홀수 번째 수를 읽을 때마다 중앙값을 출력하는 프로그램을 작성해야 한다.중앙값은 지금까지 입력된 수들을 정렬했을 때 가운데 위치한 값이다.예를 들어 수열이 1.. 2025. 10. 28.
백준 2169 c++ "로봇 조종하기" -PlusUltraCode- https://www.acmicpc.net/problem/2169[필자 사고]전형적인 DP WellKnown 문제다.다만 이 문제만의 매력 포인트는 왼쪽 및 오른쪽 두가지 방향에서 접근하고 한번 이동한 곳은 다시 접근하지 않는다는 조건이다.생각해보자. 오른쪽만 갔을 경우에는 간단하게 최적해를 찾아 dp계산을 수행했다.다만 왼쪽이 더해지면서 vectorleft ,right 을 이용하여 왼쪽에서 접근 쭉 계산하고오른쪽에서 접근 쭉 계산한뒤마지막 더 큰값을 dp[i][k]에 넣는 형태로 문제를 해결해야 되었다. 괜찮은 문제다.아래는 자세한 코드 해설이다.[코드 해설] 코드 해설1. 입력 처리cin >> N >> M;arr.assign(N + 1, vector(M + 1));for (int i = 1; i >.. 2025. 10. 24.
백준 2352 c++ "반도체 설계" -PlusUltraCode- https://www.acmicpc.net/problem/2352[필자 사고]2개의 포트가 있고 왼쪽 포트에서 연결할 수 있는 포트가 정해져있다.겹치지 않고 순서대로 .. LIS를 뜻한다.lower_bound를 이용하여 자기보다 크거나 같은 수를 찾은 뒤 그 값이 현재 비교하려는 수보다 클 경우 대체한다. 왜 대체하냐 ?? 이전꺼는 왼쪽 포트는 현재 포트보다 작은 수이기 때문이다. 즉 겹치기 때문이다.없애야 한다. 아래는 자세한 코드 해설이다.[코드 해설]문제 요약n개의 왼쪽 포트가 순서대로 1, 2, 3, …, n으로 고정되어 있고, 오른쪽 포트 연결 정보가 주어진다.교차하지 않는 연결선의 최대 개수를 구하는 문제로,이는 곧 오른쪽 포트 배열의 가장 긴 증가 부분 수열(LIS)의 길이를 구하는 문제로 .. 2025. 10. 24.
백준 1781 c++ "컵라면" -PlusUltraCode- https://www.acmicpc.net/problem/1781[필자 사고]재미난 문제다. well known 문제.. 먼저 해당 값들을 데드라인 기준으로 sort 정렬한다.그뒤 우선순위 큐를 이용하여 ramen 의 값을 저장하고 .우선순위 큐의 size를 이용하여 데드라인과 비교한다. 여기서 재미난 점이 ramen의 값은 우선순위 큐 덕분에 큰값은 끝으로 작은값은 알아서 앞으로 온다.결국 우선순위 큐에는 가장 최적의 큰 값들만 남게 된다. 아래는 자세한 코드 해설이다.[코드 해설]이 코드는 백준 1781번 컵라면 문제를 구조체(Node)와 우선순위 큐(min-heap)로 구현한 풀이이다.코드 설명1. 입력 및 데이터 저장int N;vector> arr;cin >> N;for (int i = 0; i .. 2025. 10. 24.