본문 바로가기

내일배움캠프 안드로이드 3기

[TIL] 24.01.18

1. 알고리즘 문제 해결

 

N과 M (5)~(8) (백준 15654, 15655, 15656, 15657): 

 문제들이 다 골자는 같고 상세 조건만 조금씩 다른 유형이라 이미지는 하나만 업로드 했다. 보고 있던 강의에선 재귀를 이용한 순열, 조합 문제라고 했는데, 백트래킹의 기초에 가깝다. N이 충분히 작기 때문에 메모리 스택 걱정 없이 재귀로 편하게 구현하면 된다.

 

 

트리의 부모 찾기(백준 11725): 

 브루트 포스는 O(n^2)로 시간 초과이고, 인접행렬을 이용하면 메모리가 초과될 것이다. 그래서 각 vertex에 대해 인접 리스트를 사용해야 한다. 이후에는 BFS로 풀면되는데, 처음 제출했을 때 1%에서 바로 틀렸다. 대체 왜 틀렸나 싶어서 꽤 오래 고민한 것 같다.

 다시보니 이진 트리가 아니라 그냥 트리에 관한 문제였고, 인접 리스트인 Vector 원소 갯수를 최대 3개(부모1, 자식2)로 상정하고 풀었던 부분만 수정하니 바로 통과했다. 개념적으로 자주 접하고 이용하게 되는게, 레드-블랙 트리 같은 자가 균형 이진 탐색트리나 B-Tree, B+Tree처럼 자식 노드 수가 제한된 탐색 트리가 많으니까 실수하기 쉬운 부분인거 같다.

 

 

 

2. 안드로이드 공부

 

 마침 어제 말한 것처럼, 강의에서 Compose와 xml을 동시에 사용하는 내용이 있었다. 네비게이션 구현을 위해 xml 방식의 Navigation 및 Fragment를 이용하기 위함이었다.

 appcompat 라이브러리가 없어서 xml 기반 클래스들이 찾아지지 않길래, dependenies에 추가가 필요했다. 그런데 얼추 xml 상에서 디자인 및 네비게이션 셋팅을 마쳐두고, 컴파일 후에 실행하자마자 앱이 죽길래 에러 로그를 확인해봤다.

 

  Compose의 네비게이션이 아닌, 기존의 네비게이션을 이용하기 위해 MainActivity를 AppCompatActivity()로부터 상속받아 쓰는 상황이었는데 처음보는 오류였다. 레이아웃 xml 상에서 xml 네임스페이스라도 잘못줬나 싶었는데, 확인해보니 그건 아니었다. 문제는 res/values/themes.xml 쪽에 있었다.

 

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="Theme.MovieApp" parent="android:Theme.Material.Light.NoActionBar" />
</resources>

 

 처음 프로젝트를 생성할 때, Compose 프로젝트로 생성해놔서 그런지는 몰라도, MainActivity의 theme으로 지정된 Theme.MovieApp이 Material 내의 테마를 상속 받고 있었다. 그래서 익숙한 Theme.AppCompat.Light.NoActionBar로 설정하고 다시 실행했더니 정상 작동했다. 

 단순하게 xml이든 Compose든 한쪽만 이용해서 앱을 만들 때는 생각하지도 못했던 디테일인데, 둘을 혼용할 때는 유의해야겠다.

 

'내일배움캠프 안드로이드 3기' 카테고리의 다른 글

[TIL] 24.01.20  (0) 2024.01.20
[TIL] 24.01.19  (0) 2024.01.19
[TIL] 24.01.17  (0) 2024.01.17
[TIL] 24.01.16  (0) 2024.01.16
스타터 노트  (0) 2024.01.15