[24.07.04] TIL - 025

🎧 0. 오늘의 추천곡

너무 나쁜 코드는 코드가 아니었음을

💻 1. 코드 카타

오늘의 코드 카타는 다리를 지나는 트럭입니다.

문제 내용은 어느 정도 무게를 버틸 수 있는 다리를 지나는 트럭들이 다 지날 때까지 얼마나 걸리는지가 내용이었습니다.

다리 모양을 생각해보면, 입구와 출구가 있고, 이건 마치 큐(Queue) 자료구조처럼 생겼습니다.

그래서 저는 큐를 사용해 풀었습니다.

import java.util.Queue
import java.util.LinkedList

class Solution {
    fun solution(bridge_length: Int, weight: Int, truck_weights: IntArray): Int {
        var answer = 0
        var queue: Queue<Int> = LinkedList()
        var bridgeQueue: Queue<Int> = LinkedList()
        var sum = 0
        repeat(bridge_length) {
            bridgeQueue.add(0)
        }
        for(i in truck_weights.indices) {
            queue.add(truck_weights[i])
        }
        while(true) {
            answer++
            val now: Int? = queue.peek()
            sum -= bridgeQueue.remove()
            if(now == null) {
                if(sum == 0) break
                continue
            }
            if(sum + now <= weight) {
                queue.remove()
                bridgeQueue.add(now)
                sum += now
            }
            else {
                bridgeQueue.add(0)
            }
        }
        return answer
    }
}

스택도 그렇고, 확실히 코틀린의 장점 중 하나인 자바와의 호환성이 돋보였습니다.

그리고, Queue와 LinkedList 자료구조를 쓰는 방법도 알아냈습니다.

오늘은 코드 카타를 해내서 다행인 것 같습니다.

🚩 2. 프로젝트 - 게임 SNS

오늘은 레이아웃 작업을 마무리하고 기능을 추가하고 싶었으나, 몇몇 이슈가 있어서 완벽하게 추가는 못했습니다.

제가 오늘 겪은 이슈들을 소개해보겠습니다.

2-1. GridView를 늘리기

제가 해야 하는 건 동적으로 GridView를 늘리는 기능이었습니다.

그래서 LayoutParams를 써서 해결하려 했으나, 약간의 오류가 있었습니다.

첫 번째는 아무리 GridView 자체를 늘려도, 그걸 담고 있는 LinearLayout 자체를 늘리지 않는 이상 그대로인 점.

이 점은 사실 wrap_content라 자동으로 바뀔 줄 믿고 있던 제 잘못이었습니다.

그리고 GridView 자체는 그냥 아래로 계속 확장되더라고요.

두 번째는 LinearLayout을 Adapter에서 찾아서 사용하는 것.

이건 조금 이상한데, LinearLayout을 가져와도 그걸 인식을 못했습니다.

처음에는, 당연히 식에 문제가 있다고 생각해서 그 부분을 수정하고 있었습니다.

근데, 다른 애들은 잘 변하는 반면, 오로지 LinearLayout만 그대로였기에, ID 받아오는 과정이 이상한가 싶어서

이 부분을 빼고, 직접 Activity에서 ID를 가져오니, 해결됐습니다.

현재는 기본적인 레이아웃 자체는 완성됐고, 로그아웃 기능 추가, 자료 추가만 하면 될 것 같습니다.

2-2. Github Merge 도중 파일 사라짐

이건 좀 이상한 상황이었는데, 오늘 점심 스크림을 진행하면서 merge를 다 같이 해봤습니다.

제가 처음으로 merge를 시도했고, 첫 순서였기에 자연스럽게 병합됐으나, 문제는 그 다음이었습니다.

merge 과정에서 제 파일들이 사라졌고, 저는 이걸 해결하기 위해 다시 merge를 시도했습니다.

문제는, 병합한 branch를 가져오는 과정에서 생겼습니다.

기존에 로컬 브랜치에 제가 갖고 있던 파일 몇 개가 사라지고, 오류와 충돌이 쏟아졌습니다.

결국, 이를 해결하기 위해 시간을 되돌려서 merge 하기 전의 Commit을 가져와 새로 branch를 만들었습니다.

근데, 이 내용을 올려보려고 하니까 아까와 같은 상황이 생겼습니다.

그래서 제가 내린 결론은 GitHub 내에서는 이미 이 파일들이 들어왔다고 생각하고 있다는 것이었습니다.

그렇기에, 파일 이름을 바꾸고 이를 새 branch에 올려서 이후에 merge를 진행했습니다.

쉽지 않은 하루였습니다.

🎯 3. 끝

아마 오늘 기본적인 기능들을 마무리하고,

내일은 자료를 받고, 이를 추가하는 과정과, 애니메이션을 추가하지 않을까 싶습니다.

프로젝트가 역시 재밌는 것 같습니다.

그리고 주말이 다가오는데... 알고리즘 공부를 해야 할 시간이 오고 있네요.

끝.

profile
여기는 공부 기록용 블로그

0개의 댓글