#문제정보 출처 : www.acmicpc.net/problem/2437 #문제분석 사용된 알고리즘 : 그리디(GREEDY), 누적합 문제풀이의 핵심은 측정 가능한 부분이 끊기지 않아야 한다는 것이다.예를들어, [1,7] 구간을 측정 가능한 상황에서 4KG 무게의 저울추가 추가로 주어졌다고 가정해 보자. 4KG 저울추 추가로 인해서, [1+4, 7+4] 의 추가 측정 가능 구간이 생긴다. 기존 측정 가능 구간 [1,7] 과, 추가 측정 가능 구간 [5,11]은 이어져 있기에 새로운 측정 가능 구간은 [1,11] 이라고 할 수 있다. 다음으로 [1,11] 구간을 측정 가능한 상황에서, 15KG 무게의 저울추가 추가로 주어졌다고 가정해 보자. 15KG 저울추 추가로 인해서, [1+16, 11+16] 의 추가 ..
#문제정보 #문제분석 C++ STL 라이브러리의 queue를 이용하면 간단하게 해결 가능한 문제이다. 10장 20장 40장 50장 100장 묶음의 카드뭉치가 주어졌다고 가정할때, 무조건 작은 카드들 부터 묶는게 최적의 선택이다. 따라서 priority_queue 컨테이너 어댑터를 이용해서, 작은 카드 뭉치 두개를 임시변수에 저장해 놓은뒤 , 각각 pop 하고 합쳐서 다시 집어넣는 식으로 풀이하였다. #소스코드 #include #include using namespace std; int N; int result; int a,b; int main() { ios::sync_with_stdio(false); cout.tie(0); priority_queue q; cin >> N; for (int i = 0 ; ..
#문제정보 #문제분석 #목표 BOJ 1080 "행렬"문제는 matrix1을 matrix2와 똑같이 바꾸는데 필요한 "연산"횟수의 최솟값을 구하는 문제이다. 만약 아무리 연산을 수행해도 바꿀 수 없는 구조라면 "-1"을 출력한다. #연산이란? 문제에서 설명하는 연산이란 matrix1의 (0,0) 번째 에서 연산 (3*3)을 수행한다고 가정하면 다음 그림과 같이 (0,0)을 기준으로 3*3 칸의 수들이 0은 1로 1은 0으로 변하는 것을 의미한다. #선택한 박스의 수만 신경쓰자! 그런데, 선택한 박스 (0,0)를 제외한 나머지 노란색 박스의 수들이 변하는것은 사실 크게 신경쓰지 않아도 된다. 왜냐하면 어차피 노란색 박스 차례가 왔을때 언제든지 다시 원래의 수로 되돌릴 수 있기 때문이다. 그래서 좌측 상단에서..
#문제 정보 #문제분석 간단한 문제이지만, 조심하지 않으면 실수하기 쉬운 문제이다. 테스트케이스로 (5, 8, 20) 이 주어졌다고 가정하겠다. 총 휴가 기간(V)은 20일이고, 연속하는 8일(P)동안 캠핑장을 5일(L)동안만 사용 가능하다. 휴가기간동안 캠핑장을 최대로 이용하기 위해선 8일 중 5일을 모두 사용해야 하는것은 당연하다. 따라서, 16일동안 캠핑장을 10일 이용한뒤, 나머지 4일을 모두 이용하면 최대 이용 기간은 14일이 된다. 그런데 여기에 함정이 있다. 만약 테스트 케이스로 (3, 8, 20) 이 주어졌다고 가정해보자. 8일 중 3일을 모두 사용하면, 16일동안 6일이 사용 가능하고 나머지는 4일이 남는다. 여기서 남은 일수인 4일을 모두 더해버리면 문제의 조건 (연속하는 8일중 3일만..
*개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다. #1 About Vector Container #2 Vector 사용방법 - 사전 작업 - Vector 선언 및 초기화 - Vector 값 추가 (push_back, insert) - Vector 값 삭제 (pop_back, erase) - Vector 원소 위치 변경 (iter_swap) #3 SIZE & CAPACITY - size() , max_size() , capacity() - resize() [size 축소] - reserve() [사전 메모리 할당] #4 원소 접근 - []연산자 [범위점검X] - at() [범위점검O] #1 About Vector Container Vector 컨테이너는, ..