일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- theming
- Coroutine
- k8s
- 글또
- viewmodel
- mockito
- Compose
- 스레드
- 병럴프로그래밍
- 테스트
- android
- 알게되는
- 디자인패턴
- 코루틴
- 회고
- Gradle
- 안드로이드강좌
- Rxjava
- Kotlin
- 안드로이드스튜디오
- 책
- g 단위테스트
- 커스텀상태
- 자바
- 안드로이드
- 병렬프로그래밍
- kotlin강좌
- 코틀린
- ReactiveProgramming
- 알고리즘
- Today
- Total
목록CS/Algorithms (3)
선생님, 개발을 잘하고 싶어요.
https://www.acmicpc.net/problem/16637 문제 조건 잘못 보고 조금 해맨 문제. 문제 분류 브루트포스 비트마스크 문제 해결 아이디어 문제의 조건은 수식의 길이가 N (N ≤ 19, 홀수) 숫자는 한자리로 구성됨. 괄호는 중첩될 수 없음. 괄호 안에는 연산자가 하나만 들어 있어야 함. 4번 문제 조건을 생각 안해서 좀 해맸다. 문제 해결 아이디어는 괄호에 넣을 연산자를 고르는 것이다. 연산자의 총 갯수는 N/2이고 N은 19이므로 괄호에 넣을 연산자와 괄호에 안 넣을 연산자를 구분해서 생각한다면 모든 케이스를 비트마스크 연산으로 손쉽게 순회할 수 있다. 예를 들면 이런 식인데 문제에 주어진 예제 입력 3에서 처음 *와 마지막 +는 괄호에 넣지 않는 연산자. 그 다음 +는 괄호에 ..
https://www.acmicpc.net/problem/17267 문제 카테고리 BFS 접근 방법 처음에는 벽 부수기 문제 처럼, 왼쪽으로 갈 수 있는 횟수, 오른쪽으로 갈 수 있는 횟수를 Node 정보로 저장하는 방법을 생각했지만 그렇게 되면... (x, y, l, r) 각 숫자 모두 1000의 크기를 가지므로 평생 풀 수 없다. 따라서 다음과 같은 아이디어를 고안했다. 별로 안어렵다. 한 번의 BFS를 하며 각 x,y에 도달하기 위한 L, R을 기록한다. 문제의 조건에 만족하는 노드만 count한다. 독특하게 처리해야 하는 곳은 "위 아래로 노빠구" 하는 부분이다. 코드 보면 이해하기 쉽다. 도움을 준 문제들 레이저 통신: https://www.acmicpc.net/problem/6087 상남자보다..
https://www.acmicpc.net/problem/2261 문제 분류 분할 정복, D&C 메인 아이디어 가까운 두 점의 거리의 제곱을 출력하는 함수. go(int left, int right) 함수를 생각해보자. [left, right] 영역에서 가장 가까운 거리는 다음과 같은 케이스 내에 있다. 왼쪽 영역에서 가장 가까운 거리 → go(left, mid) 오른쪽 영역에서 가장 가까운 거리 → go(mid+1, right) 왼쪽 영역과 오른쪽 영역을 연결하는 점들의 거리 → ?? 1과 2는 재귀 호출을 통해서 아주 간단하게 구할 수 있다. 이제 문제는 다음과 같다. 입력 전처리를 어떻게 할 것인가? 언제가 가장 작은 문제인가? → 직접 계산 필요. 3번 케이스를 어떻게 구할 것인가? → 알고리즘 ..