본문 바로가기

알고리즘/C++32

[백준] 1406번 에디터 www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 연결 리스트의 기본 개념을 물어보는 문제였다. 처음 공부할때 커서의 위치가 너무 헷갈려서 힘들었던 기억이 난다. 그래서 메모장을 연상하면서 이해하기 위해 노력했다. 결과적으로 커서가 가리키는 칸이 a이고 뒤의 칸이 b라면 a의 뒤에, 즉 a와 b사이에 커서가 존재한다. (a|b) 또한, 커서가 가르키는 칸에 값이 없다면(문자열 끝의 다음 커서 값) 그 칸 자체가 커서라 생각하면 위처럼 이해할 수 있다. 배열 cu.. 2021. 3. 6.
[백준] 3273번 두수의 합 www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 처음에 짰던 코드는 입력을 배열에 저장 후 2중 for문을 통해 O(N^2)으로 원소를 2개씩 조합하여 확인하는 것이었다. 검색을 통해 O(N)으로 처리한 방식이 인상적이였어서 개인적으로 남겨놓고 싶다. 1. 입력을 배열에 저장후 sort를 통해 배열을 오름차순으로 정리한다. 2. 2개의 커서를 배열의 시작값과 끝값에 존재시키고 반복문을 실행한다. 3. 2.. 2021. 3. 6.