CPP (51) 썸네일형 리스트형 [알고리즘] Greedy algorithm - 이집트 나눗셈(cpp) 문제 이집트 나눗셈을 하는 프로그램을 작성하시오. 입력 p/q를 나타내는 두 정수 p, q가 사이에 공백을 하나 두고 주어진다. p는 1 이상 1,000 이하, q는 p+1 이상 2,000 이하인 정수 출력 수업 시간에 배운 이집트 나눗셈의 결과로 몇 개의 분수가 나오는지 출력한다. 예를 들어, 5/6은 1/2 + 1/3이므로 2개의 분수가 필요하다. 예제 입력 1 5 6 예제 출력 1 2 예제 입력 2 19 20 예제 출력 2 4 알고리즘 수업의 첫 과제였다. 이집트 나눗셈이란, 유리수 p/q가 주어지면 분자가 1인 분수들의 합으로 p/q를 표현하는 것이다. 예) 5/6 = 1/2 + 1/3 , 3/4 = 1/2 + 1/4 욕심쟁이 기법, 흔히 Greedy 알고리즘이라고 부르는 기법을 사용하여 풀이할 .. [코드트리] TreeSet 연습문제 문제 : top K 숫자 n개의 숫자가 주어졌을 때, 중복을 제외하고 내림차순으로 정렬했을 때 앞에 있는 k개의 숫자를 출력하는 프로그램을 작성해보세요. 입력 형식 첫 번째 줄에는 원소의 개수 n과 k가 공백을 사이에 두고 주어집니다. 두 번째 줄에는 n개의 원소가 공백을 사이에 두고 주어집니다. 1 ≤ k ≤ n ≤ 100,000 1 ≤ 주어지는 원소 값 ≤ 109 출력 형식 중복을 제외하고 내림차순으로 정렬했을 때 앞에 있는 k개의 숫자를 공백을 사이에 두고 출력합니다. 중복을 제외했을 때 원소의 개수가 k보다 작은 경우는 없다고 가정해도 좋습니다. 나의 풀이 #include #include using namespace std; int main() { int n; int k; int a; set s.. [코드트리] Tree Set SW중심대학 사업단에서 CodeTree와 함께 실시한 코딩테스트 대비 캠프에 참여하여 공부한 내용을 정리하였습니다. * 참고 : python과 c++, java 등 언어별로 설명이 다른 부분 존재! 필자는 c++ 사용. set STL C++에서는 set이라는 STL을 이용할 수 있습니다. set은 TreeSet 자료구조로 되어있으며, 이 TreeSet이 바로 균형 잡힌 이진트리 구조로 데이터들을 관리해주는 자료구조 입니다. 모든 함수의 시간복잡도는 O(logN)입니다. set을 사용하기 위해서는 #include 헤더와, set name; 형태의 선언이 필요합니다. T는 타입으로, set 안에 들어갈 원소의 타입을 적어줘야 합니다. #include #include using namespace std; in.. [코드트리] TreeMap 연습문제 문제 n개의 명령이 주어졌을 때, 각 명령을 수행하는 프로그램을 작성해보세요. 명령의 종류는 크게 4가지 입니다. add k v : (k, v) 쌍을 treemap에 추가합니다. key가 k, value가 v라는 뜻입니다. 이때 만약 동일한 k가 이미 존재한다면, v로 덮어씁니다. remove k : key가 k인 쌍을 찾아 treemap에서 제거합니다. 잘못된 입력은 주어지지 않습니다. find k : key가 k인 쌍이 treemap에 있는지를 판단합니다. 있다면 해당하는 value를 출력하고, 없다면 None을 출력합니다. print_list : treemap에 있는 쌍들을 key 기준으로 오름차순 정렬하여 각 value 값들만 공백을 사이에 두고 순서대로 출력합니다. 만약 treemap이 비어있다.. [코드트리] Hash Map SW중심대학 사업단에서 CodeTree와 함께 실시한 코딩테스트 대비 캠프에 참여하여 공부한 내용을 정리하였습니다. * 참고 : python과 c++, java 등 언어별로 설명이 다른 부분이 존재합니다! 필자는 c++을 사용하고 있습니다. unordered_map STL C++에서는 unordered_map이라는 STL을 이용할 수 있습니다. unordered_map은 HashMap 자료구조로 되어있으며, HashMap의 경우 해싱을 기반으로 데이터들을 관리해주는 자료구조 입니다. HashMap은 (key, value) 쌍 형태로 들어가 있어, key와 그에 따른 value 값을 동시에 저장하는 형태입니다. 따라서 HashMap의 삽입, 삭제, 탐색 등 모든 함수의 시간복잡도가 전부 O(1)입니다. u.. [코드트리] 공간복잡도 SW중심대학 사업단에서 CodeTree와 함께 실시한 코딩테스트 대비 캠프에 참여하여 공부한 내용을 정리하였습니다. 프로그램의 소요시간 뿐만 아니라, 컴퓨터의 메모리가 한정되어 있으므로 공간복잡도도 중요합니다. 공간복잡도도 시간복잡도와 동일하게 점근적 표기법을 사용합니다. function example(n) set arr = [n][n] for i = 0 ... i < n for j = 0 ... j < n arr[i][j] = 1 공간복잡도 = '이 코드가 메모리를 얼마나 차지하고 있을까?' 위 코드에서 set arr = [n][n] 이외의 다른 코드는 메모리를 차지하고 있지 않기 때문에, 공간복잡도는 O(N^2) 입니다. 그렇다면 공간복잡도는 왜 필요할까요? 문제에서 메모리 제한이 80MB라는 식으로.. [PGS] Lv.0 (코딩테스트 입문) 8일차 문제 프로그래머스 C++ 배열 자르기 vector solution(vector numbers, int num1, int num2) { vector answer; for(num1; num199) { answer.push_back(alpha[age / 100]); age -= 100*(age/100); } if(tmp>9) answer.push_back(alpha[age / 10]); answer.push_back(alpha[age % 10]); return answer; } → 새로운 풀이 string answer = to_string(age); for(auto& v : answer) v += 'a'-'0'; return answer; // for(반복될 지역변수 : 배열) -> 지역변수가 배열 길이만큼 반복됨.. [PGS] Lv.0 (코딩테스트 입문) 7일차 문제 프로그래머스 C++ 특정 문자 제거하기 string solution(string my_string, string letter) { string answer = ""; answer = regex_replace(my_string, regex(letter), ""); return answer; } 각도기 int solution(int angle) { if(angle==90) return 2; if(angle == 180) return 4; if(angle>0 && angle 이전 1 ··· 3 4 5 6 7 다음