본문 바로가기

set

(2)
[BOJ 27231, 약간 어려움] 2023년이 기대되는 이유 (C++) 개인적인 난이도 약간 어려움 정석 풀이는 아마 백트래킹으로 문자열 중간에 +를 삽입하는 것이다 근데그냥 브루트포스로 풀어도 풀린다 난 백트래킹 말고 그냥 set 반환하는 재귀함수 만들어서 브루트포스로 풀었다 재귀는 항상 어렵다 dp문제를 풀때도 항상 느끼지만 어떤 연산을 절차적으로 생각하는 건 익숙하지가 않다 그래서 한참 걸려서 풀었다 1시간정도걸림 수련이 부족하다 성공한 풀이) 성공한 코드 #include #define fastio cin.tie(0)->sync_with_stdio(0) #define ll long long using namespace std; ll pow(int a,int b){ if(a==0)return 0; if(a==1)return 1; if(b==0)return 1; retur..
[BOJ 1655, 쉬움] 가운데를 말해요 (C++) 개인적인 난이도 쉬움 똥싸면서 생각한대로 구현하니까 풀림 이게 왜 골드 2인지 모르겠다 https://www.acmicpc.net/problem/7662 얘는 비슷한 문제 같은데 아직 못 풀었다 얘는 골드 4임 실패한 풀이) set을 이용해서 구현하면 중간값을 쉽게 찾을 수 있다고 생각했다 안되는 이유 set은 일단 중복된 값을 처리하지 못한다. s.begin()부터 중간값까지 한칸씩 가는 시간이 오래 걸린다. N/2칸 이동을 총 N번 하니까 O(log n^2)임. (이진트리의 이분탐색의 장점을 살리지 못함) set은 red-black tree. 정렬이 자동으로 되는 균형 잡힌 이진트리임 탐색 시간 O(log n) 삽입/삭제 시간 O(log n) 실패 코드 #include #define fastio ci..