본문 바로가기

분류 전체보기

(160)
[TIL] 24.01.18 1. 알고리즘 문제 해결 N과 M (5)~(8) (백준 15654, 15655, 15656, 15657): 문제들이 다 골자는 같고 상세 조건만 조금씩 다른 유형이라 이미지는 하나만 업로드 했다. 보고 있던 강의에선 재귀를 이용한 순열, 조합 문제라고 했는데, 백트래킹의 기초에 가깝다. N이 충분히 작기 때문에 메모리 스택 걱정 없이 재귀로 편하게 구현하면 된다. 트리의 부모 찾기(백준 11725): 브루트 포스는 O(n^2)로 시간 초과이고, 인접행렬을 이용하면 메모리가 초과될 것이다. 그래서 각 vertex에 대해 인접 리스트를 사용해야 한다. 이후에는 BFS로 풀면되는데, 처음 제출했을 때 1%에서 바로 틀렸다. 대체 왜 틀렸나 싶어서 꽤 오래 고민한 것 같다. 다시보니 이진 트리가 아니라 그냥 트..
[TIL] 24.01.17 1. 알고리즘 문제 해결 스택 수열(백준 1874): 스택 자료구조를 이용한 단순 구현 문제. 외계인의 기타 연주(백준 2841): 처음에 기타 줄을 누르는 손가락이 5개라고 생각해서 조금 복잡한 구현 방식을 떠올렸는데, 다시보니 손가락이 수십억개인 외계인이 기타를 치는 문제였다. 음의 수가 500,000개가 최대고 줄의 수도 6개 밖에 되지 않아서 그냥 스택 6개짜리 벡터 생성해서 풀었다. C++ 기준으로는 빈 스택의 top을 참조하지 않도록 조금 신경써줘야 한다. 오큰수(백준 17298): 단순하게 브루트 포스로 접근하면 O(n^2)가 되어 시간초과가 날 것이다. 처음엔 i+1~n번째에 해당하는 부분 수열에 대해 인덱스를 포함한 pair로 만들고, 값과 인덱스 둘 모두 이용하는 우선순위 큐를 만들까 ..
[TIL] 24.01.16 1. 알고리즘 문제 해결 키로거(백준 5397): 자료 구조 기반 단순 구현문제. 커서 좌우 부분을 각각 스택으로 나누어 해결했다. 링크드 리스트로 해결해도 무난할 것 같다. PPAP(백준 16120): 처음에는 KMP 알고리즘이나 보이어-무어 알고리즘 같은 스트링 매치 알고리즘을 이용하려고 했다. 문자열 내에서 "PPAP"를 찾아 "P"로 변경하려는 생각이었다. 그런데 입력으로 들어오는 문자열의 최대 길이가 1,000,000인데, 변경된 문자열을 계속해서 탐색-변경 해줘야해서 시간 초과가 날 것 같았다. 그리고 문자열의 대부분이 같은 글자이고, 탐색해야 하는 Substring의 접두사와 접미사가 같기 때문에 스트링 매치 알고리즘들이 큰 효과를 보이지 않을 거 같기도 했다. 그래서 스택을 이용했다. 스택..
스타터 노트 내가 앱 트랙(iOS, Android)에 참여한 계기는 무엇인가요? - 평소에도 안드로이드 개발자를 희망하고, 혼자서 공부하고 있었습니다. 아무래도 독학을 하다보면, 협업 프로젝트나 협업 툴에 대한 경험이 부족해지고, 사용 중인 기술이나 구현 방식이 실무의 것과 동떨어져도 깨닫기 힘들다고 생각합니다. 내일배움캠프의 앱 트랙에서는 실무 경험이 있는 강사들의 멘토링을 받을 수 있고 협업 프로젝트도 경험할 수 있도록 과정을 제공한다고 했습니다. 이를 통해 제 부족한 부분들을 보완할 수 있을 거 같아서 지원하게 되었습니다. 내가 이해한 앱개발자는 어떤 역할을 하는 사람인가요? - 먼저 개발자는 요구되는 기능을 프로그래밍을 통해 공학적으로 구현해낼 수 있는 사람이라고 생각합니다. 앱개발자는 그런 개발자 중에서도 ..
[안드로이드 짤막공부] 23.09.30 카카오 API를 이용한 미디어 검색 앱을 만들던 도중, 오랜만에 오류를 겪었다. 대강 이런 오류였는데 아무래도 API를 통해 받아온 데이터를 바인딩하는 과정에서 오류가 나는 거 같았다. 유독 VideoItem의 playTime을 받아올 때만 오류가 발생했다. 처음에는 API의 response 값을 받아올 때 VideoItem에 대해 잘못된 값을 참조해서 존재해야 할 값이 없는가 해서 Postman으로 직접 API를 호출해 보니, response로 주어지는 인자들의 이름은 모두 제대로 SerializedName으로 처리해 둔 상태였다. 실제로 Retrofit 객체를 통해 전달받은 데이터들을 Log로 찍어 확인해 본 결과 모두 정상적으로 받아 오고 있었다. 그래서 문제가 발생한 ItemVideoBinding..
[안드로이드 짤막공부] 23.09.05 1. 위치 기반 서비스를 구현하기 위해서 구글의 FusedLocationProvider를 사용하는데, 자꾸 lastLocation 값이 이상한 곳으로 뜨는 문제가 있었다. 가상 머신에서만 유독 그런 오류가 생겨서 AVD 세팅 문제인 거 같아서 좀 헤맸다. 아무래도 AVD가 처음 구동되면 내가 설정해 둔 좌표로 기기가 제대로 인식되고 있지 않는 상태인 거 같았다. 현재 위치 기반으로 시간대를 자동으로 설정하게 해 두었는데 시간대가 맞지 않는 걸 보면.. 그래서 부팅 이후 AVD 설정 내에서 set location을 다시 하고 디바이스 내에서 위치 기능을 껐다가 킨 후, 구글맵에 들어가서 현재 위치가 제대로 뜨는 걸 확인했다. 이후 앱을 재실행했는데 그럼에도 lastLocation의 위도와 경도 값이 이상하..
[안드로이드 짤막공부] 23.09.02 1. 오랜만에 버그가 생겨서 한참 고생했다. 평소처럼 액티비티 클래스와 레이아웃 생성 후, 해당 액티비티를 생성하는 Intent 인스턴스를 만들어 startActivity()를 이용해 실행하려 했다. 그런데 디자인 해둔 레이아웃이 존재함에도 불구하고 계속 흰 화면만 나왔다. 로그를 찍어 확인해보니 startActivity() 위 아래의 코드 모두 정상적으로 진행되고 있었고, 레이아웃 문제인가 싶어 확인해보아도 딱히 특별할 것 없는 ConstraintLayout이었다. 차라리 앱이 저 순간에 죽거나 에러라도 띄운다면 문제를 쉽게 해결하겠는데 전혀 문제가 발생하지 않아서 원인 찾기가 더 힘들었다. 문제가 있는 액티비티의 onCreate() 내에 로그를 찍게 하고 확인하니 해당 로그가 전혀 찍히지 않았다. 아..
[안드로이드 짤막공부] 23.08.22 1. 안드로이드 13을 탑재한 가상 머신의 오디오가 정상적으로 출력이 되지 않는 문제가 있었다. 더 낮은 레벨의 안드로이드 머신들에서는 정상적으로 출력되는데, 처음에는 디바이스 세팅 문제인가 싶어 꽤 헤맸다. 도저히 내 문제가 아닌 거 같아서 찾아보니 꽤나 오래 묵은 문제인 거 같았다. 그래서 포기하고 더 낮은 API레벨의 안드로이드로 테스트하려던 찰나에 마침 오늘자 당장 몇 시간 전 코멘트로 저런 게 있길래, 안드로이드 스튜디오 내에서 sdk를 업데이트해 주고 새 기기를 만들어 실행하니 오디오가 정상적으로 출력됐다. 코멘트가 올라온 타이밍이 예술이었다. 2. Foreground Service와 Notification을 이용한 음악 플레이어를 구현하고 있었는데, 만든 Notification에 대해 set..