문제 : https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 어떤 문제인가? 배열이 있을 때 | A [0] - A [1] | + | A [1] - A [2] | +... + | A [N-2] - A [N-1] |의 값이 최대가 되게 배열을 재배치해야 한다. 배열을 재배치하고 난 후 얻을 수 있는 최댓값을 출력하면 된다. 접근 방법 숫자를 재배치하기 위해서는 어떤 숫자를 어디에 배치해야 할지를 결정해야 한다. 따라서 데이터는 앞, 뒤 삭제 삽입 연산이 간편한 de..
deque
문제 : https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 어떤 문제인가? 명령어와 수열을 입력받고 명령어에 맞게 연산을 실행한 후 결과를 출력하면 된다. 접근 방법 처음에는 벡터에 문자를 저장했다. 그리고 R이 입력될 때마다 reverse함수로 정말 벡터를 역순으로 만들어줬다. 당연히 결과는 시간 초과...... 그래서 다른 방법을 생각하다가 할 수 있는 연산이 2개밖에 없으니 정말 뒤집지 말고 뒤집어졌다고 생각하고 연산을 하기로 했다. 만약 현재 상태가 뒤집어져있는 상태가 아닐 때 D가 입력되면 맨..
문제 : https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 어떤 문제인가? 문자열을 입력받고 가상의 커서가 존재해서 문자와 문자 사이를 왔다 갔다 하며 삭제하거나 추가하는 기능을 구현하면 된다. 사실 우리가 키보드로 타이핑할 때와 똑같은 경우이다. 그리고 모든 연산이 끝난 후의 문자열을 출력하면 된다. 접근 방법 vector text; string input, order; int M; cin >> input >> M; int cursor = inp..