#문제정보 #문제분석 #목표 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 컨테이너는, ..
# 문제 정보 # 문제 분석 가장 대표적인 그리디 문제인 "거스름돈"과 거의 같은 문제이다. 주의 해야할 점이라면, 눌러야 할 버튼의 총 횟수를 출력하는 것이 아닌 각 버튼의 경우의 수를 출력해야 한다는 것과, 189초 와 같이 A(300초) B(60초) C(10초) 버튼을 이용해 딱 맞아 떨어지게 누르지 못하는 케이스는 "-1"을 출력해야 한다는 것만 조심하면 된다. # 소스 코드 _ 1 #include using namespace std; int T; // 요리시간(1 T; temp = T / 300; ary[0] += temp; T = T - (temp*300); temp = T / 60 ; ary[1] += temp; T = T - (60*temp); temp = T / 10; ary[2] += ..
* 다음 포스팅은 개인적인 공부 내용을 기록한 것으로, 잘못된 내용이 있을 수 있습니다. 선택정렬[Selection Sort] 알고리즘이란? 선택정렬 예시 #선택정렬 C언어 구현코드 #선택 정렬[Selection Sort] 알고리즘 이란? 선택 정렬은 기초가 되는 정렬 알고리즘 중 하나로, "가장 작은 값을 탐색하여 맨 앞의 데이터와 교환해 나가는 아이디어"를 이용한 알고리즘이다. 시간복잡도는 모든 상황에서 O(N^2)으로 , 다른 정렬 알고리즘에 비해서 매우 비효율적이다. 배열에 3 5 2 8 7 이 저장되어 있다고 가정하고 선택 정렬 알고리즘을 이용해 오름차순으로 정렬해 보도록 하자. #선택 정렬[Selection Sort] 예시 [탐색 1] 첫 번째 인덱스 3과 나머지 자료(2번째 ~ 5번째)를 비..