본문 바로가기

분류 전체보기351

[백준 5397] 키로거 www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L의 길이 ≤ 1,000,000) 강산이가 백스페이 www.acmicpc.net 1. 스택 2개 만들어서 풀기 #include #include using namespace std; int main(void) { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; stack s1, s2; for (int i = 0; i > str; for (int j = 0.. 2020. 11. 29.
[백준 1406] 에디터 www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 연결리스트, 스택, 덱을 이용해서 풀 수 있다. 1. 스택 이용 두 개의 스택을 이용한다. 커서의 왼쪽에 있는 문자열을 s1 스택에 저장. 커서의 오른쪽에 있는 문자열은 s2스택에 저장한다. 명령어 L과 D의 경우 커서가 움직일 때마다 문자열을 옮긴다. #include #include #include using namespace std; stack s1, s2; int main(void) { ios_base::s.. 2020. 11. 29.
[알고리즘] 정렬 - quick sort 퀵소트 - 불안정정렬, 비교정렬 - divide and conquer 사용 이름이 퀵소트인지라 best case에선 가장 빠른 시간복잡도를 가지지만 worst case에선 한없이 느려지는....양날의 칼느낌이다. 그냥 머지소트를 쓰는 걸로 하자. 시간 복잡도 best case O(n log n) worst case O(n^2) worst case는 어떤 경우냐 하면 오름차순 정렬인데 5 4 3 2 1로 배열이 제시되었을 경우이다. 퀵 소트의 구현 과정을 살펴보면 이해 가능하다. 퀵소트는 1. pivot이 있고 (보통 배열 왼쪽 끝 혹은 오른쪽 끝 값) 2. 피벗을 중심으로 좌측엔 피벗보다 작은값, 우측엔 피벗보다 큰 값을 배치한다. 3. 작은값, 큰 값 교차 지점에 피벗을 놓는다. 4. 피벗을 중심으로 .. 2020. 11. 29.
[백준 10814] 나이순 정렬 www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net sort를 사용하면 간단하나 소팅을 사용하지 않고 접근해보자. 배열 인덱스를 사용하기! age를 인덱스로 사용하여 벡터에 저장한다. 넓게 넓게 생각하자 //stl 안쓰고 정렬 #include #include using namespace std; vector v[201]; int main(void) { int n; cin >> n; for (int i = 0; i < n; i++) { int age; string na.. 2020. 11. 28.