목록전체 글 (120)
할머니의 콤퓨타 도전기
문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..
문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 \* 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scovi..
문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..
1. 덱(Deque) 이란? double-ended queue 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조 (queue + stack) 2. deque container 사용 헤더파일 추가 선언 : deque [변수 이름] 3. deque의 멤버 함수 (deque dq로 선언되어있다고 가정) dq[idx] : idx 번째 원소 참조 dq.front() : 첫 번째 원소 참조 dq.back() : 맨 마지막 원소 참조 dq.clear() : 모든 원소 제거 dq.push_front(1) : dq의 첫 번째 원소 앞에 1 삽입 dq.pop_front() : dq의 첫 번째 원소 제거 dq.push_back(1) : dq의 마지막 원소 뒤에 5 삽입 dq.pop_back() : dq의 마지막 원소 제거 d..
1. 기본 형태 map : key와 value를 pair 형태로 선언 2. map의 주요 멤버들 begin(): 첫 번째 원소의 iterator를 반환 end() : 마지막 원소의 iterator를 반환 insert(make_pair(key, value)) : map에 원소를 pair 형태로 추가 erase(key) : map에서 key(키값)에 해당하는 원소 삭제 clear() : map의 모든 원소들 삭제 find(key) : key에 해당하는 iterator를 반환 count(key) : key에 해당하는 원소(value) 의 개수를 반환 size() : map 원소들의 수를 반환 empty() : map이 비어있으면 true 그렇지 않으면 false 반환 3. 특징 검색을 자주 할 때 사용 그러나..
unique 함수 vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수 ( 남은 뒷부분은 그대로 vector 원소값이 존재함) 헤더파일 : algorithm 정렬된 상태여야 함 n개의 원소에 대한 시간 복잡도 : O(n) #include #include #include using namespace std; int main() { vector v; v.push_back(5); v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(2); v.push_back(1); v.push_back(4); v.push_back(4); // 기존 : 5 1 2 3 2 1 4 4 sort(v.begin(),v.end()); //1. 정렬 unique(v..