🐥 Records/Daily | Today I Leared

[TIL] 99클럽 코테 스터디 12일차 TIL + DP, (SwiftUI) Map 오류

이오🐥 2025. 4. 16. 02:53

🍀 오늘의 회고

오늘부터 회고를 앞에 써야지! 오늘 헬스장에 가서 운동은 안 하고 씻고 왔다. ㅎㅎ.. 스터디 카페 가는 길에 있어서 들렀는데, 앞으로는 이렇게 운동도 하고 가면 좋을 것 같다. 알고리즘 문제를 풀 때 요즘에 한 번만에 맞는 경우가 잘 없다. 그래도 하루에 3문제 정도씩은 푸는데, 한 번 정도만 맞는 것 같다. 경우를 고려하지 못할 때도 있지만, 접근을 못한 경우도 생긴다. 그래서 오히려 알고리즘 자체에 대한 학습이 더 필요하다고 느낀다. 내일부터는 진짜 알고리즘 자체에 대한 학습을 병행해야겠다.

 

컴피의 컴피존 개발을 계속 하고 있는데, 생각보다 정말 분기 처리해야 할 지점이 많다. 좀 더 잘 만들고 싶어서 노력 중인데, 오늘 마주한 충돌 오류까지.. 빨리 개발하고 싶은 마음이 크지만 자꾸 늦춰지는 것 같다. 오늘은 SwiftUI와 MapKit을 사용하며 Map 내부에서 Metal 이 쓰이는 코드로 인한 충돌을 마주했다. 우선 팝업들을 먼저 구현했고, 이제 슬슬 위치 기능과 지도를 추가해야 한다. 위치에 대한 UseCase를 분리해서 생성해 봐야겠다.

 

앨런의 Concurrency 강의 벼락치기 중이다. async와 await 관련 내용을 보고 있는데, 이전에 사용되던 GCD 방식까지 오히려 더 이해가 잘 되고 있는 것 같다. 쭉 듣고 마디 리팩토링하면서 네트워킹도 다시 고쳐보면 좋을 것 같다. 아예 Alamofire를 제거하고 URLSession 방식으로 해볼까도 고민 중이다.

 

✅ 오늘의 TODO

- 알고리즘(3문제)

  - 오늘의 문제 ✅

  - Class2 문제 1개 

- 컴피

  - 구리스 PR 리뷰

  - 위치 기능 구현 🔜(진행 중)

  - 컴피존 설정 화면 구현 🔜(진행 중)

- 앨런 Concurrency 🔜(진행 중)

- TIL 작성 

 

🌼 오늘의 문제 - 백준 9095. 1, 2, 3 더하기

주어진 숫자를 1, 2, 3의 합으로 구성하는 경우의 수를 구하는 문제였다. 조건이 1부터 10까지라 처음에는 약간 시간이 걸려도 되는구나 생각하고 풀었다. 조합도 생각하고 경우의 수를 더해가는 것도 생각했는데, 오히려 아주 간단하게 dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3] 이렇게 해결하는 문제였다. dp는 이제 안다고 생각했는데, 아니었나 보다 ㅎㅎ

t = int(input())
dp = [0] * 11
dp[0], dp[1], dp[2], dp[3] = 0, 1, 2, 4

for i in range(4, 11):
    dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]

for _ in range(t):
    n = int(input())
    print(dp[n])

 

👀 컴피 - 컴피존 팝업 및 기능 구현 중 만난 Map 충돌

-[MTLDebugDevice notifyExternalReferencesNonZeroOnDealloc:]
The following Metal object is being destroyed while still required to be alive by the command buffer
...
label = CAMetalLayer Display Drawable

기능 구현 중에 이런 오류와 함께 충돌이 났다. 처음에는 키보드를 사용하는 View에서 텍스트필드 포커스만 되면 충돌이 나길래, 키보드가 올라오면서 뭔가 그냥 디버깅 오류가 나는 건가? 싶었다. 그런데 자세히 알아보니 아직 렌더링 중인 Metal 커맨드 버퍼가 존재하는 상태에서 뷰가 제거됨이라는 문제가 있던 것이었다.. 후후 Map 내부에 CAMetalLayer 텍스처가 해제되면서 GPU가 접근 중에 크래시가 나는 거라고 알려줬다. 이 문제를 내일 본격적으로 해결해보려고 한다.

 

오늘은 구리스 PR 리뷰와 팝업 띄우는 기능들을 구현했다. 컴피 개발을 하면서 가장 코드 리뷰를 '잘' 해보는 것 같다. 어떤 리뷰를 받아도 리뷰가 달렸다는 메일이 오면 신나게 달려오게 된다. 생각지 못했던 내용이면 감탄하기도 하고, 칭찬이면 하루 종일 기분이 좋기도 한다. 이렇게 쓰고 보니 뭔가 소소하게 좋아하는 느낌인데, 정말 코드를 쓰면서도 더 신중하게 된다. 무엇보다 가독성을 가장 고민하게 된다. '내'가 잘 알아보는 것뿐만 아니라 '다른 사람'들도 잘 읽히는 코드를 쓰려고 노력 중이다. 그리고 MVI 사용기도 한 번 글로 올려보면 좋을 것 같다.

 

☘️ 마디 전체, 기획 회의

업데이트 기획을 시작하고 나서부터는 거의 항상 기획 회의에 참여한다. 이제 기록과 관련된 상세 기획이 마무리되었다. 이번 주에는 상세 기획 피드백을 진행하기로 했다. 이제 리브랜딩과 화면 디자인을 기다리면서 우리도 슬슬 준비를 해야 할 것 같다. 앨런 강의가 끝난 다음 주부터는 TCA를 공부하고, 네트워킹 리팩토링도 마무리해두어야겠다. 화면과 기능이 꽤 바뀌면서 새로운 API들도 생겨날 것 같다. 바로 대응할 수 있도록 구현해 두어야지.