본문 바로가기

C++16

[백준 1406/c++] 에디터 임의의 위치에 삽입과 삭제가 잦은 경우, 시간복잡도 상의 이득을 위해 연결 리스트의 자료구조를 생각해보아야 한다 연결리스트는 양 끝을 제외하고는 이전 주소 값과 다음 주소 값을 가지는 노드를 가진 구조이다 C++ 의 STL list 를 이용해서 풀면 상대적으로 구현이 편하다 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.. 2022. 8. 6.
[백준 15651/c++] N과 M (3) 백트래킹의 3번째 기본문제. 선택할 수를 중복으로 여러번 사용하여도 되므로 이전의 풀었던 N과 M (1) https://tokkic.tistory.com/188 [백준 15649/c++] N과 M (1) 백트래킹을 사용하여 푸는 첫 문제이다 백트래킹이란 이전 결과를 보존하고 그 이전 결과를 기반으로 재귀를 사용하여 경우의 수를 찾는 방법이다 백트래킹은 브루트 포스 = 완전 탐색 과는 조 tokkic.tistory.com 문제에서 isused 의 조건을 풀어주고 관련 식만 삭제하면 성립하는 간단한 문제이다 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 .. 2022. 8. 2.
[백준 15650/c++] N과 M (2) 22. 08 .02 코드 수정 - 타 풀이 참고 오름차순 순열의 조건을 새 함수로 설정하지 말고, 백트래킹 함수에 인자를 하나 추가하여 백트래킹 내 재귀 시에 항상 자신의 값보다 더 큰 수를 갖도록 하여 오름차순이 되도록 구현, 더 큰 수 이므로 중복을 체크하기 위한 isused 조건도 빼주어 더욱 간결한 코드로 바꿀 수 있다 22. 08. 01 백트래킹 문제에 오름차순 순열이라는 조건이 걸린 문제이다 해당 수가 이전에 사용된 수들 보다 큰지를 체크 하여 맞을 시 참을 리턴하는 함수를 만들어 (0은 항상 참) 백트래킹의 조건 중 하나로 집어 넣어서 풀었다 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한.. 2022. 8. 1.
[백준 11729/c++] 집합 시간초과가 되지 않도록 비트연산을 사용가능한지, memset 을 사용 가능한지 ios_base::sync_with_stdio(false); 등등 여러 방법을 통해 빠른 연산 능력을 구현가능한지를 묻는 문제이다 논리야 너무 간단했지만 처음 제출했던 코드에서 왜 틀렸는지 모르겠어서 5시간 넘게 붙잡고 맞왜틀! 거리고 조금씩 고쳐서 제출했더니 세상에... 내 제출로 인한 틀렸습니다만 한페이지다 민망 하하... 처음부터 전체적으로 다시 고쳐서 해결하였다 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acm.. 2022. 7. 6.