목록분류 전체보기 (163)
Simple&Natural
진행하는 프로젝트의 Gradle을 리팩토링 하던 중 빌드가 되지 않는 현상이 발생하였다. 안드로이드 스튜디오 버전 4.0 오류 내용 Execution failed for task ':app:mergeDebugJavaResource'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > More than one file was found with OS independent path 'META-INF/AL2.0'. 해결방법 구글링 도중 발견한 문제 해결의 키워드이다. 여러 모듈 앱 환경에서 작동하는 비슷한 문제에 직면했습니다. 오류 : ': app : transformResource..
DFS 문제이다. 따로 알고리즘을 공부한 적이 없어서 필요한 개념이 있으면 원리만 익힌 뒤 나름대로 구현해 보고 있다. Stack을 이용하는 방법도 있는 것 같은데 개인적으로 재귀가 가장 직관적으로 잘 풀려서 재귀를 이용했다. 다만 재귀를 이용할 경우 항상 Stack이 넘치는 것을 주의해야 한다. 이 문제의 경우 표본이 크지 않아서 문제가 없었으나 혹시 표본이 커질 경우 경우의 수를 좀 더 쳐내거나 꼬리재귀를 사용하는 방법도 고려해야 한다. 우선 각각의 banned_id에 해당될 수 있는 모든 유저를 각각의 리스트에 담아 matched_id를 만든다. 예를 들어 사용자 목록 : [철수, 영희, 철구, 미애, 은희] 가 있고 불량 사용자 : [철*, *구, *희] 가 있다면 철* -> 철수, 철구 *구 -..
withContext와 coroutineScope의 비교 두 함수 모두 suspend fun으로서 코루틴 내부에서 블록을 중단시키기 때문에 유사해 보인다. 그러나, coroutineScope는 withContext의 한 유형으로 볼 수 있다. 즉, coroutineScope는 withContext(this.coroutineContext) 와 본질적으로 같은 의미를 지닌다. coroutineScope는 Dispatcher를 설정할 수 없다 (무조건 현재 호출한 context를 사용하기 때문이다) - coroutineScope는 에러처리 등의 목적으로 특정 코드를 하나의 블럭으로 묶고 싶을 때 사용 - withContext는 해당 코드블럭을 특정 Context에서 실행하고 싶을 때 사용하는 용도 (네트워크 ..
원리는 매우 간단한데 직접 그림을 그려보면 더욱 이해가 쉽다. 90도 회전은 위아래를 대칭시킨 뒤 주 대각선에 대해 대칭시킨 형태이다. 대각선에 대해 먼저 대칭을 시켜도 된다. 여기서 주 대각선이란 배열의 행과 열이 같은 라인을 의미한다. 아래의 그림은 2차원 배열을 보기 쉽게 도식화한 것이다. 색이 칠해진 부분을 1, 빈 칸을 0 으로 보면 [[0, 1, 0], [1, 1, 0], [0, 0, 1]] 형태의 2차원 배열이 된다. 이 배열을 위에서부터 쌓아내렸을 경우와 아래에서부터 쌓아 올렸을 경우 두 가지로 생각해보자. (사실 별 차이는 없다) reverse를 이용하면 배열의 행이 역순이 되므로 위아래가 바뀌고 i, j 대신 j, i를 대입해주면 배열의 행과 열이 바뀌게 되므로 대각선에 대한 대칭이 된..