목록CPP (38)
have to do_yeon
헤더파일 및 사용방법 헤더파일 : stable_sort(시작점주소, 마지막점주소 +1, 함수); #include #include int main(){ int arr[6] = {2,4,3,5,2,1}; stable_sort(0, 5+1); for(int i = 0; i sort(): 평균적으로 약 O(Nlog₂(N))의 요소 비교와 최대 요소 개수만큼의 값 교환(또는 이동)을 수행한다 (N은 first와 last의 거리를 뜻한다). >> stable_sort(): 충분한 메모리가 있다면 약 O(Nlog₂(N)), 충분한 메모리가 보장되지 않는다면 약 O(Nlog₂²(N)) 시간만큼의 요소 비교와 최대 요소 개수만큼의 값 교화을 수행한다. (N은 first와 last의 거리를 ..

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 위 문제는 pair과 sort 개념을 활용하여 풀면 쉽게 풀 수 있다. 비교해주는 함수를 첫번째 인자만 사용해서 비교하게 한다. 그리고 함수를 정렬할 때 sort가 아닌 stable_sort를 사용해야 정답으로 인정된다. 첫번째 인자가 같을 경우 들어온 순서대로 정렬하게 한다. 제출 답안 #include #include using namespace std; int comp(pair x, pair y){..
Pair 두 데이터 값을 하나의 쌍으로 묶어줄 때 사용한다. 헤더파일 및 선언방법 헤더파일 : 그런데 algorithm, vector 헤더파일에 utility 헤더파일이 이미 포함되어 있다. 따라서 나는 헤더파일을 사용하는 편이다. Pair 선언 : pair 이름; #include int main(){ pair name;// int형, char형이 한 쌍인 pair 선언 } 기본 함수 1. 이름.first pair의 첫번째 인자를 반환한다. 2. 이름.second pair의 두번째 인자를 반환한다. 3. make_pair(변수1, 변수2) 변수1과 변수2가 들어간 pair 한 쌍을 만들어준다. 4. operator (==, !=, , =) 가 정의되어있음 5, sort 알고리즘으로 정렬 가능 #inclu..

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 반복문을 사용하려고 했지만 아무리 생각해도 아닌 것 같아서 두 개를 한 쌍으로 취급하는 방법, 또는 개념이 있는지 알아보았다. 그 개념은 바로 pair 이다. https://have-to-do-yeon.tistory.com/49 [C++] Pair Pair 두 데이터 값을 하나의 쌍으로 묶어줄 때 사용한다. 헤더파일 및 선언방법 헤더파일 : Pair 선언 : pair 이름; #incl..
스택 (Stack) 스택 한쪽 끝에서 자료를 넣고 가장 마지막에 넣은 데이터가 가장 먼저 빠져나오는 속성을 지닌다. (LIFO : Last In First Out) 헤더파일 및 선언방법 헤더파일 : 큐 선언 : stack 이름; #include // 헤더파일 stack s;// int형 큐 선언 stack s;// char형 큐 선언 기본 함수 1. 데이터 추가 맨 뒤에 데이터를 추가함. 이름.push(데이터) 2. 데이터 삭제 맨 앞의 데이터를 삭제함. 이름.pop() 3. 첫번째 데이터 반환 이름.top() 4. 사이즈 반환 이름.size() 5. 비어있는지 확인 비어있으면 true, 아니면 false를 리턴 이름.empty() 6. 두 스택의 내용 바꾸기 내장된 swap 함수 이용. swap(큐이름..
큐(queue) 큐 한쪽 끝에서 자료를 넣고 반대쪽 끝에서 자료를 꺼낼 수 있는 선입선출의 속성을 지닌다. (FIFO : First In First Out) 헤더파일 및 선언방법 헤더파일 : 큐 선언 : queue 이름; #include // 헤더파일 queue s;// int형 큐 선언 queue s;// char형 큐 선언 기본 함수 1. 데이터 추가 맨 뒤에 데이터를 추가함. 이름.push(데이터) 2. 데이터 삭제 맨 앞의 데이터를 삭제함. 이름.pop() 3. 첫번째 데이터 반환 이름.front() 4. 마지막 데이터 반환 이름.back() 5. 사이즈 반환 이름.size() 6. 비어있는지 확인 비어있으면 true, 아니면 false를 리턴 이름.empty() 7. 두 큐의 내용 바꾸기 내장된..

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 처음에 단순하게 반복문을 사용하여 돌려봤더니 시간초과가 떴다. 그래서 수식을 사용하여 해결하는 방법을 생각했다. 생각해야할 중요한 부분이 있다. 달팽이가 정상에 도달할 때 딱 맞춰서 정상에 도착해서 낮에 끝나는지, 아니면 아쉽게 도달하지 못하여 밤을 한 번 지내고 그 다음날 낮에 도달하는지이다. 나는 이 부분을 달팽이가 다음날을 마지막 날로 하여 정상에 갈 수 있는지, 아니면 하루가 더 필요한지를 나머지를 이용하여 확인하였다. 자세한 설명은 주석으로 첨부..

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 자신을 제외한 약수가 없는 수가 소수이므로 2부터 n/2(자기자신/2)까지만 확인하면 된다. 소수는 1보다 큰 자연수여야 한다. (자기자신/2)보다 큰수는 약수가 될 수 없으므로 i를 2부터 last까지 1씩 증가시키며 반복한다. n을 i로 나누었을때 나머지가 0이면(즉, i는 n의 약수가 아님), 소수가 아니므로 0을 반환한다. (i가 약수이므로 n은 소수가 아님) 1~last(자기자신/2)사이에 약수가 없으므로 소수이다. 제출 답안 #include using n..