boj 9935 : EKSPLOZIJA(문자열 폭발) https://www.acmicpc.net/problem/9935 시간초과를 저격한 문제.1. 폭파문자가 있으면 폭파문자를 제거한다.2. 폭파문자가 없을 때까지 1의 과정을 반복한다 위의 방법으로 하면 시간초과.다른방법을 생각해보아야 한다. stack을 통해 구현하면 보다 편하다.1. stack에 문자열을 담아간다.2. stack의 윗부분이 bomb와 일치하면 bomb부분을 제거한다. 위의 방법으로 해결하면 문제가 풀린다.stack의 윗부분이 bomb와 일치하는지 확인하는 과정도 bomb size의 만큼의 시간복잡도가 필요한데, 이 부분은 character 말고 int도 함께 stack에 쌓아주는 방법으로 접근하면 보다 빠르게 풀 수 있다. stack..
boj 2624 : 동전 바꿔주기 https://www.acmicpc.net/problem/2624 이 문제 또한 전형적인 DP문제이다.나에게는 조금 생소했던... 하지만 이것저것 검색해보니 이문제 또한 전형적인 DP문제라는 것을 알 수 있었다. 이 문제가 만약 동전의 갯수가 주어지지 않았다면 바로 DP로 접근해서 풀었겠지만, 동전의 갯수가 주어져 있으면 DP로 접근하면 해결할 수 없을 것만 같다.시간복잡도가 엄청 높기 때문이다. (약 T*k*n) 그렇다면 그냥 시간초과 나는게 아닌가? 일단은 풀린다. 방법은 i번째의 동전으로 table을 채워가는 것. 초기 세팅은 0원의 경우의 수를 1로 두고 table을 채운다. 1. a[cost][i] i 번째 동전까지의 cost의 경우의 수2. Pi, ni : i..
boj 9657 : 돌 게임 3 https://www.acmicpc.net/problem/9657 재미있는 문제다.어려워보이지만 굉장히 간단한 코드를 작성할 수 있다. 위의 표를보면, 돌의 갯수가 2개일 때는 cy가 이긴다.7번째와 9번째도 cy가 이긴다.공통점은 a[i - 4] , a[i - 3], a[i - 1]이 모두 sk가 이길 경우 a[i] 는 cy가 이긴다는 것.왜그럴까?cy가 이긴다는 것은 후수가 이긴다는 얘기다. 마찬가지로 sk가 이기는 경우는 선수가 이긴다는 것이다.i 개일 때 sk가 이기려면, sk가 후수를 내주었을 때, 즉 i - 4, i -3, i - 1 셋중 하나가 후수가 무조건 이기는 경우가 있어야만 가능하다. 8의 경우를 보면 8 - 4 = 4 : sk, 8 - 3 = 5: s..
boj 1298 : 노트북의 주인을 찾아서boj 2188 : 축사 배정 https://www.acmicpc.net/problem/1298https://www.acmicpc.net/problem/2188 두 문제 모두 이분매칭의 1번문제이다.이분매칭 문제를 모든 경우를 고려할 경우 시간복잡도는 N!로 N이 웬만큼 작지 않으면 해결할 수 없다."네트워크플로우 -> 이분매칭" 으로 이어지는 공부 과정을 거쳐야 풀수 있는 문제이다. 이분매칭 문제는 위와같이 단순한 형태의 네트워크 플로우 모형으로 바뀌고, 동시에 "가장 매칭쌍이 많으면 몇개일까?" 라는 질문은 "source에서 sink로 최대 얼마나 흘려줄 수 있을까?" 라는 질문으로 바뀐다. 이후 포드 퍼커슨 알고리즘을 이용하여 네트워크 플로우의 최대 흐름을 ..
boj 2672 : 여러 직사각형의 전체 면적 구하기 https://www.acmicpc.net/problem/2672 풀었던 문제 중 제일 많이 틀렸습니다!! 인 것 같다.ㅜㅜ... 처음 접근은1. 사각형의 넓이를 다 더한다.2. 두 사각형이 겹치는 넓이를 뺀다. 이렇게였는데, 틀렸다.위와같은 방법으로 접근하려면 1.사각형의 넓이를 다 더한다.2. 두 사각형이 겹치는 넓이를 뺀다.3. 세 사각형이 겹치는 넓이를 더한다.4. 네 사각형이 겹치는 넓이를 뺀다.5. 다섯 사각형이 겹치는 넓이를 더한다..... 이와같이 접근해야하므로 시간복잡도를 감당할 수 없을 것 같아 포기. 생각을 거듭하다보면, 이런 생각을 떠올릴 수 있다. 위와같은 사각형이 주어졌을 때, 위와같이 영역을 모두 쪼갠다.이후 각 영역이 사각..
boj 1701 : editor(cube editor) https://www.acmicpc.net/problem/1701 내가 풀어낸 해법은 간단하다.하지만 좀더 빠르게 풀려면 뭔가가 필요한 것같다.. 접미사 배열에서 중복제거라던가..KMP라던가 ㅜㅜ 일단 내가 풀어낸 방법은1. 접미사 배열을 모두 뽑아낸다.2. 접미사 배열을 정렬한다.3. 인접한 접미사의 최대 매칭 길이를 구한다.4. 그 길이의 최대값을 출력한다. 2번->3번으로 넘어가는게 생각이 약간 필요하다.생각의 흐름은1. 접미사의 공통된 앞부분은 문자열의 공통된 부분문자열이다.2. 접미사는 정렬되어있다.3. i번째, i+1번째 접미사의 최장부분매칭길이를 구하면 공통된 부분문자열의 최대길이이다. 떠올릴 수 있는 간단한 방법이니만큼 어딘가에 개선의..
boj 2841: GITARA(외계인의 기타연주) https://www.acmicpc.net/problem/2841 문제를 이해하기가 힘들지만, 이해만 하면 풀 수 있는 아이디어를 간단히 떠올릴 수 있다. 7개의 stack을 이용하면 된다.stack의 top이 눌러야할 플렛보다 클경우 모두 pop해주고 눌러야할 플렛을 push해주면 해결된다. 7개의 줄은 모두 독립적으로 처리하면 된다. pop한 횟수와 stack에 push한 횟수만큼이 손가락을 움직이는 횟수이다.
- Total
- Today
- Yesterday
- boj 7579
- boj 1799
- 백준 앱
- 문제 풀이
- boj 용액
- BOJ
- 백준
- SCPC 2016
- 알고리즘
- 백준 2467 용액
- 백준 도시 분할 계획
- 네블컵 2회
- 10159
- 백준알고리즘
- scpc
- 도시 분할 계획
- codeground
- boj 1806
- 백준 비숍
- 백준 1806
- 연습문제
- 풀이
- 백준 부분합
- dp
- 백준 7579 앱
- 백준 1799
- boj 앱
- 2469
- 백준 용액
- 백준 1647
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |