Notice
Recent Posts
Recent Comments
Link
Always awake
백준 일지 (~04/07) 본문
03/20
- DP
- https://boj.kr/2293 동전 1 (G5)
- 이제 DP연습해야지..
- 처음에는 DP[N][K]로 각 동전마다 돌면서 가지수를 구해줬다.
- $DP_{ij} = \sum_{k=0} ^{j // i} DP_{i-1j-k*coin}$
- 근데 메모리 초과가 나더라?!!
- 생각해보니 어차피 i-1번째만 참고해서, 한줄로 가능하다!
- 그리고 여러번 업데이트되는쪽은 자기의 j-coin번째만 참고하면 된다.
- 따라서 $DP_i = DP_i-coin$을 $i*j$번 돌면 완료!
- https://boj.kr/2294 동전 2 (G4)
- 위 문제와 같은 상황이지만, 이번에는 그걸 만족하는 최소 동전수 구하기
- 비슷한 방법으로 채우면 되지 않을까?
- 음! 잘 된다. 거의 같은 아이디어네.
- https://boj.kr/1890 점프 (S1)
- 그냥 $i*j$ 순회하면서 세면 될거같은데?
- 맞네. 근데 길의 개수가 꽤 커질 수 있으니 long long으로, 그대로 순회하면 마지막 DP[N-1][N-1]번째 칸에서 4배가 되므로 (오른쪽갈때 두배, 아래로 갈때 두배) 4로 나눠주거나 그 타이밍에 break문을 걸면 된다. 나는 오버플로우날까봐 쫄아서 탈출로..
- https://boj.kr/1520 내리막길 (G3)
- 아.. 문제 제대로읽기.. ㅠㅠ 보자마자 위에서 아래로 내려오는건 필수인지알고 음? $O(N^3)$ 풀이로 그냥 위에서부터 훑으면서 내려오면 되겠는데? 싶었는데 바로 틀렸다..
- 그럼 음.. 이럴때야말로 탑다운 해야하나? 무조건 내려와야한다는 조건때문에 순환을 돌것같지도 않으니, 재귀 돌려보자!
- 탑다운이 짜기 훨씬쉽네??;;; 앞으로 바텀업 말고 탑다운 먼저 생각돌려야겠다.
- https://boj.kr/1965 상자넣기 (S2)
- LIS네 이거
- 근데 LIS 구현한지 너무 오래됏다?!?!?!
- $O(N^2)$ 구현으로 어케든 짜보자...
- 생각보다 직관적으로 짜니까 나오네. 길이랑 최댓값 저장해두고 달리기
- https://boj.kr/2631 줄세우기 (G4)
- 엥? 이것도 똑같이 LIS인데? 전체 인원수에서 LIS 길이 빼면 되는듯?
- 엥??????? 코드도 진짜 마지막에 출력 하나 바꿨는데 맞았다... 이건 난이도 거품이 좀 있네...
- https://boj.kr/2302 극장 좌석 (S1)
- 음. VIP 없는 각각의 자리에서 나올수있는 경우의수들을 각각 곱해주면 되겠다.
- 그리고 -1, +1로만 움직일수 있다는건 바로 붙어있는 두명을 바꾸는 경우의 수만 가능하다는거구나.
- N명의 일반 손님이 붙어있을때 자리바꾸는 수열 만들순있겠지만.. 귀찮으니 재귀로 풀어버리자 ㅎㅎ
- 근데 짜다보니 피보나치네.. 그냥 바텀업하기..
- https://boj.kr/2293 동전 1 (G5)
- 그래프
- 이분 매칭
- https://boj.kr/11377 열혈강호 3 (P3)
- 이분매칭.
- 각자 돌리는게 우선이니 한번 돌리고, 더돌릴수있나 한번더 메이킹
- 이분매칭은 이제 익숙해졌으니.. 템플릿에 넣을까..
- https://boj.kr/11377 열혈강호 3 (P3)
- 이분 매칭
03/21
- 슬라이딩 윈도우
- https://atcoder.jp/contests/abc337/tasks/abc337_d Cheating Gomoku Narabe (760)
- 첨에 어떻게 셀까 고민했는데.. 이거 슬라이딩윈도우네??!!?
- 아침에 샤워하다가 아이디어 떠올렸다. 신기하네 이거
- https://atcoder.jp/contests/abc337/tasks/abc337_d Cheating Gomoku Narabe (760)
- 해 구성하기
- https://boj.kr/20311 화학 실험 (G5)
- 그냥 제일 많은애들부터 정렬해서 1 3 5 7... 꽂고 2 4 6 8... 꽂으면 될거같았다.
- 이게 되네
- https://boj.kr/20311 화학 실험 (G5)
- 트리 DP
- https://boj.kr/13024 서브 트리의 크기 (P4)
- 음.. 보자마자 생각난 문제는 https://boj.kr/12817 버스 노선 (P5)
- 비슷하지만, 버스 노선은 한 노드 기준으로 양쪽에서 두개 고르기, 그리고 이 문제는 한 노드를 포함하는 서브트리 개수 구하기 = (붙어있는 노드들의 서브트리 개수 + 1) 의 곱!
- 근데 이걸 모든 노드에 대해 구하면 $O(N^2)$로 바로 터져버리니까, 약간 센트로이드? 같은 느낌으로 나는 DP[노드][자신 포함 서브트리 합, 자신 미포함 서브트리 합, 서브트리 가지수] 로 정리해서 풀었다.
- 이것보다 쉬운풀이 뭐 있었지만.. 저것도 가능한 풀이였는데 오버플로우로 진짜 몇시간을 속썩였는지 모르겠다... C++ 오버플로우 너무 신경쓰이고 어렵다 ㅜ 곱하기는 두개이상 절대 쓰지 않기!!!
- 1,000,000,007은 제곱했을때 long long형에 닿을락 말락한다. 진짜 조심하자.
- https://boj.kr/13024 서브 트리의 크기 (P4)
04/04
- http://boj.kr/16238 독수리 (G1) #그리디 #정렬
- 어제 자면서 생각했는데, 먹는 순서는 상관이 없더라!
- 먹는것만 정하면, 순서는 상관이 없음
- 그러면 많이먹으려면? 많은거부터 정렬하고, 양수인동안 계속 먹자. 한번 먹을때마다 나머지는 1씩 다 빠진다.
- http://boj.kr/15003 Amsterdam Distance (S2) #기하학 #브루트포스
- 걍 수학이다.. 헷갈리네
- 무조건 둘중에 안쪽에서 도는게 최소길이일줄알았는데, 아닌갑다. 그래서 그냥 다 돌아줬음.
- http://boj.kr/17976 Thread Knots (G3) #매개변수탐색 #그리디
- 신촌 캠프때 파라메트릭 한번 데인 이후론 진짜 잘보인다!
- 이 길이로 되나? 되나? 를 테스트해보면 되니까.
- 시간복잡도는 헷갈리긴 하는데.. $O(NlogNM)$ 인듯? 정렬하는데 NlogN, 탐색에 logM
- http://boj.kr/2994 내한 공연 (P5) #배낭문제
- 무조건 가능하다고 했으니까, 결국 N만 가장 효율적으로 채우면 된다!
- 하나에 잘 채우면, 나머지 하나는 자동으로 결정
- 그러면? 배낭문제로 배낭을 가장 무겁게 잘 채워보자.
- 그리고 역추적만 하면 깔끔하다. 문제 교육적이고 좋은듯
- http://boj.kr/25320 SCV 체인 (P4) #해구성하기 #그리디
- 어렵다. 아이디어는 바로 떠올려도, 구현을 어떻게할지가 상당히 막막하다.
- 반례처리도 빡세고, 솔직히 파이썬이니까 그나마 편하게 구현했지 c++이엇으면 더 고생했을듯
04/05
- https://boj.kr/9369 암호 깨기 (G3) #구현
- 아 미친 진짜 개고생했네
- 너무싫다 이런문제..
04/06
- https://boj.kr/13348 Memory Match (S2) #구현 #많은조건분기
- 아.. 어제 문제 이해 안돼서 고생했네
- 그냥 구현하면 되지만... 딱 카드가 두장만 남은 상황이라는 반례가 있다.
- 잘 처리해주기..
- https://boj.kr/4782 분수 뺄셈 (G2) #수학 #정수론 #브루트포스
- 수학이다 수학
- 루트 안이 음수가 되면 안되니까 B까지만 돌아주면 된다
- 깔끔하게 풀리는듯?
04/07
- https://boj.kr/27278 영내순환버스 (S1) #수학 #누적합
- 그냥 뭐 시키는대로 하면 끝
- https://boj.kr/11567 선진이의 겨울 왕국 (G3) #BFS
- 괜히 쫄아서 뭔가 신경썼네
- 그냥.. 돌면 된다.. 정직하게 시키는대로..
- https://boj.kr/27281 운전병의 딜레마 (G1) #매개변수탐색 #다익스트라
- 이제는 진짜 웰논으로 느껴지는 파라메트릭 매개변수탐색
- 최대불편도를 찍고 돌려보면서 하면 된다.
- 근데, 다익스트라를 그동안 실수하고있었다!!
- 1, 2, 3, 4번 노드에서 다 5번노드를 갈 수 있는데, 5번노드가 계속 시간이 갱신되고있었다면 5번노드가 큐에 4번 들어가고 계속 돌아버릴지도?!?!
- 방문했는데 다른데서 온 최단거리에 의해 길이가 줄어있다면 패스하자. 그때 돌리면 된다!
- https://boj.kr/18882 Cowntact Tracing (S2) #구현 #시뮬레이션 #브루트포스
- 그냥 딱 첫 소랑, K수 정해주면 $O(NT^2)$ 정도에 돌아간다.
- 구현에서만 실수하지 않기~
- https://boj.kr/3108 로고 (G2) #분리집합 #기하학
- 아우 기하 싫어
- 근데 기하가 아니라.. 분리집합에서 실수했더라..
- 머리를 연결해줘야한다! 그리고 마지막에 다 머리를 찾아가줘야한다! 조심하기
- https://boj.kr/27926 Quartet (G1) #그래프 #그리디
- https://boj.kr/19535 문제가 생각나는 아이디어.
- 간선을 기준으로 양쪽을 보자!
- 와 근데.. 10^9가 3개 더해지면 30억으로 int를 넘는구나.. 맞왜틀 엄청하고있었네 ㅜㅜ 웬만하면 long long 박기..
- ABC 348
- 버추얼로 70분정도 잡고 봤다
- 근데 너무잘봤다!!! 어제 볼걸 아쉽다
- A - Penalty Kick (01:05) #구현
- 그냥 뭐 반복문 구현.. 이하생략...
- B - Farthest Point (02:55) #브루트포스 #기하학
- N 제한이 작으니까 브루트포스 돌려버리기!
- $O(N^2)$ 로 돌아간다.
- C - Colorful Beans (05:08) #맵
- C 제한이 크니까, 맵으로 관리해주기.
- D - Medicines on Grid (34:59) #BFS #다익스트라 #우선순위큐
- 처음에 약간 당황했는데, 결국 특정 칸에서 가장 에너지가 많은게 이득이다!
- 근데 이걸 무슨 느낌으로 풀까 고민하다가 그냥 BFS를 쳤는데.. 시간초과.
- 근데 무조건 에너지가 많을수록 이득이다? 어? 이거 다익스트라 반대인거 아닌가?
- 최대 힙으로 우선순위 큐를 짜서 관리하자! 문제 아이디어 좋은거같다.
- 근데 이게 의도한풀이도 아니고 시간복잡도가 증명되지도 않았다고 하네. 근데 빨리돌아서 신기해했다고...
- E - Minimize Sum of Distances (76:15) #트리 #DP
- 트리DP!
- 저번주에 풀었던 http://boj.kr/30491 이랑 느낌이 비슷해서, 생각보다는 빠르게 떠올랐다.
- 같은 문제인데 가중치가 추가된 느낌