전체 글 (166) 썸네일형 리스트형 [TIL] 24.04.02 팀 프로젝트 1. 팀 프로젝트 오늘은 거의 하루종일 팀 프로젝트만 진행한 것 같다. 다른 팀원들의 코드를 봐줄 일이 잦았는데, 나는 의도가 옳았다면 나쁜 코드는 아니라고 생각하는 편이라, 되도록 의도가 맞지 않은 부분 위주로 피드백하려고 했다. 조금 더 나아가서, 개선할 수 있겠다 싶으면 개선점을 첨언하기도 했다. 안드로이드 자체가 상대적으로 러닝커브가 완만하지는 않은 느낌이라, 초심자들이 고생하는 것도 이해는 간다. 그래도 잘 설명해서 팀원들이 이해하면 그거대로 기분 좋은 경험인 것 같다. 그리고 형상 관리 이슈부터, 코틀린 문법, 안드로이드 구현에 이르기까지 다양한 질문을 받고 답을 하다보면, 내 베이스 지식도 한결 단단해지는 느낌이고.. 그러는 동시에, 내가 맡은 부분의 코드도 작성해야 했는데 일단 과제의 제약.. [TIL] 24.04.01 챌린지반 세션, 앱개발 입문주차 팀 프로젝트 1. 챌린지반 세션 저번 주에 이어서 ViewModel을 이용할 때 유의해야하는 점들에 대해서 배웠다. 도중에 알게된 것이지만 DataBinding을 되도록 지양해야한다는 것은 조금 놀랐다. MVVM과 함께 썼을 때 정말 강력한 방법이라고 생각했는데, 지금에 와서는 득보다는 실이 많은듯 했다. 보일러 플레이트 코드를 줄여주고, 양방향 바인딩이나 LiveData를 손쉽게 이용하게 해주는 것은 분명히 장점이지만, 협업 시에 코드 가독성을 해치고 디버깅이 어렵게 만든다는 것이 주요 골자였다. 더해서, Jetpack Compose가 구글의 권장사항이 된 이후로, 여러 기술적인 지원(KSP를 비롯)이 제대로 이루어지지 않아서 불안한 요소도 있다고 한다. 듣고 보니, 충분히 납득할만한 이유들이었고, 나도 XML을 .. [TIL] 24.03.29 알고리즘, 사이드 프로젝트, CS 리마인드 1. 알고리즘 문제 해결 특정한 최단 경로(백준 1504): 시작 정점이 정해져있고, 각 edge의 비용에 음수가 존재하지 않으므로 다익스트라 알고리즘을 통해 최단거리(최소비용)를 구할 수 있다. 대신 주어진 두 정점을 반드시 거쳐야 한다. 요즘 계속 풀었던 그 패턴인데, 이번 문제도 마찬가지로 조건 별로 나누어서 비용 배열을(코드의 visited vector) 처리해줄 필요가 있다. 등장할 수 있는 조건은 두 정점 중 아무것도 거치지 않은 경우, v1만 거친 경우, v2만 거친 경우, 두 정점 모두 거친 경우로 총 4가지이다. 주어지는 정점의 수가 작기 때문에, 비용 배열의 크기는 문제되지 않을 것이다. 다익스트라 알고리즘에 사용할 우선순위 큐의 경우, 비용이 적은 선택지를 최우선으로 두었고 비용이 같.. [운영체제] 2. OS 서비스 본 내용들은 전공수업으로 배운 내용들을 스스로 리마인드하기 위한 목적으로 작성되었으며, 누군가에게 지식을 전달하기 위한 목적으로 작성한 것이 아닙니다. 대부분의 내용은 제가 수강했던 전공수업 및 Operating System Concepts, 10th Edition에 근거하고 있습니다. 1. OS 서비스 - OS는 프로그램 실행을 위한 환경 및 프로그램과 유저에게 서비스들을 제공한다 (아래의 6 + 3 서비스가 대표적) 유저에게 유용한 기능을 제공(6) - User interface, Progream execution, I/O operations, File-system manipulation, Communications(Internal & External), Error Detection Resource .. [TIL] 24.03.28 알고리즘, CS 리마인드 1. 알고리즘 문제 해결 알고스팟(백준 1261): 어제 맥락이 같다고 했던 유형의 문제가 바로 나왔다. 결과적으로는 다익스트라 문제긴한데, 사실 BFS(Best-First Search, 이하 BFS) 문제라고 봐도 무방하다. Best의 판단 기준은 당연히 진행하면서 부순 벽의 수이다. 문제의 입력으로 인접 노드가 아닌 미로의 평면 정보가 주어지고, 그 수 또한 많지 않으므로(최대 100*100개의 데이터가 주어지며 심지어 데이터는 0또는 1이다) 인접 정보는 2차원 배열에 그대로 저장한다. 이렇게 하면 각종 DFS, BFS( Breadth-First Search) 문제를 풀 때 자주 사용하던 방식으로 dx와 dy배열을 만들어 좀 더 간결한 코드를 작성할 수 있다. BFS를 사용하기로 했으므로 우선순위 .. [TIL] 24.03.27 알고리즘, 챌린지반 과제 1. 알고리즘 문제 해결 도로포장(백준 1162): 다익스트라 알고리즘에 DP가 섞인 문제. 사실 DP라고 의식하지 않아도 풀다 보면 DP를 이용해서 풀게 된다. 당연하게도 브루트포스로는 풀 수 없다. 도로 중에서 포장할 도로를 고르는 경우의 수만 해도 50,000C20까지 주어질 수 있고, 각 경우의 수마다 최소 비용도 계산해야 한다. 이 문제를 해결하기 위한 로직은 꽤나 심플하다. 다익스트라 알고리즘을 사용하되, 다음 경로를 탐색할 때 도로를 포장하는 경우와 포장하지 않는 경우를 둘 다 고려해서 우선순위 큐에 넣어주는 것이다. 뭐 특정 개수 이하로 벽을 뚫고 미로를 탈출하라든지, 길의 종류가 있고 각 종류별로 제한된 수만큼만 이용하라든지 하는 DFS, BFS와 맥락이 정확히 같다. 이제 저 방법을 적.. [TIL] 24.03.26 알고리즘, 챌린지 반 과제 1. 알고리즘 문제 해결 최소비용 구하기 2(백준 11779): 어제 풀었던 간단한 다익스트라 알고리즘에 추가로 각 노드별로 직전 노드만 저장했다가 역추적해서 경로를 찾아내면 되는 문제. 그래서 별 문제 없이 풀릴 줄 알았는데, 맞왜틀 주화입마에 빠져서 엄청 고생했다.. #include #include #include #include #define INF 987654321 using namespace std; struct cmp { bool operator()(pair l, pair r) { return l.second > r.second; } }; int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); int n, m, start, targe.. [TIL] 24.03.25 알고리즘, 사이드 프로젝트 등 1. 알고리즘 문제 해결 최소비용 구하기(백준 1916): 가중치가 음수인 간선이 없고, 시작점이 고정된 상태에서 최단 경로를 구하는 문제라 다익스트라 알고리즘으로 풀 수 있고, 가장 심플한 형태이다. 정점이라고 할 수 있는 도시의 개수가 1,000개 이하로 주어지기 때문에 O(V^2)의 시간복잡도로 풀어도 무방하겠지만, 굳이 그렇게 구현할 이유는 없으므로 우선순위 큐를 사용해 O((V+E)logV)의 시간복잡도로 풀었다. 너무 잘 알려진 알고리즘이기에 이론적인 부분을 정말 간략하게 작성하자면.. - 시작점에서 향할 수 있는 노드를 찾아 비용 배열을 업데이트하고, 갈 수 없는 곳은 구현 상 들어올 수 없는 값으로 INF 처리한다. - (노드, 비용) 정보들을 우선순위 큐에 집어넣고 비용이 작은 것이 to.. 이전 1 ··· 11 12 13 14 15 16 17 ··· 21 다음