분류 전체보기
-
[Android] compose에 폰트 적용하기Android 2024. 6. 17. 16:03
폰트 저장하기폰트를 사용하려면 일단 해당 폰트 파일을 저장해야 합니다. 위치는 res/font 에 저장하면 됩니다. 이 때 각 폰트의 굵기 파일도 각각 사용할 필요가 있다면 모두 저장해두면 좋습니다. 폰트 불러오기폰트를 선언해주어야 해요. 위에서 정한 폰트를 아래와 같이 선언해주세요. 참고로 폰트 클래스는 사진과 같습니다. 이 때 Font의 weight에 각각 파일 별로 weight를 지정해주면 TextStyle을 사용할 때 원하는 weight를 줬을 때 해당 파일이 적용됩니다.@Stablefun Font( resId: Int, weight: FontWeight = FontWeight.Normal, style: FontStyle = FontStyle.Normal, loadingStr..
-
[Flutter] Flutter에서 다양한 스크롤뷰 사용하기Flutter 2024. 5. 25. 21:17
Column & SingleChildScrollViewColumn과 SingleChildScrollView를 사용하면 단순한 형태의 스크롤뷰를 구현할 수 있습니다. SingleChildScrollView( child: Column( children: [ Container(), Container(), Container(), ], ),); 장점구현이 간단하고 이해하기 쉽다.적은 양의 데이터일 경우 보이지 않는 영역도 미리 렌더링을 해서 렌더링에서 딜레이가 없다.단점여러 형태의 사용자 정의 스크롤과 스크롤 효과를 만들기 쉽지 않다. (ScrollController를 이용해서 직접 개발해야 할 것)데이터양이 많고 복잡하고 비용이 큰 UI를 불러오는 경우 짧은 순간 Jan..
-
[알고리즘][백준] 4358. 생태학알고리즘 2024. 5. 15. 17:28
문제https://www.acmicpc.net/problem/4358 문제 아이디어문제 자체는 맵에 종 별로 카운팅해서 -> 정렬 -> 출력입니다. 그런데 조건이 조금 까다로운 부분이 있습니다.# 4358. 생태학# https://www.acmicpc.net/problem/4358import sysinput = sys.stdin.readlinetrees = {}count = 0while True: tree = input().rstrip() if tree == '': break trees[tree] = trees.get(tree, 0) + 1 count += 1 sortedTree = sorted(trees)for name in sortedTree: pri..
-
[Flutter] Flutter에서 Clean Architecture 구조 설계하기 (feat. get_it)Flutter 2024. 5. 14. 03:04
시작하기 전에사실 Clean Architecture 구조를 설계한 것을 보면 정석적인 구조를 바탕으로 굉장히 다양한 형태로 구현이 되어 있습니다. 패키지로만 분리되어 있는 경우도 있고, 일부만 모듈로 따로 분리하는 경우도 있는데, 모듈 (혹은 패키지) 간 의존성만 떼어내고 관리할 수 있다면 사실 어떤 구조든 맞다고 생각합니다. (그래서 제가 만든 구조도 틀리지 않다고 생각합니다.. 아마도..) 일단 기본 전제는 아래와 같이 잡았습니다.무슨 일이 있어도 presentation 레이어는 data 레이어를 참조할 수 없어야하며, domain 레이어만을 참조할 것무슨 일이 있어도 data 레이어는 presentation 레이어에 접근할 수 없어야하며, domain 레이어만을 참조할 것그러기 위해 presenta..
-
[알고리즘][백준] 11501. 주식알고리즘 2024. 5. 14. 00:08
문제https://www.acmicpc.net/problem/11501 문제 아이디어1581547836 위와 같이 1, 5, 8, 15, 4, 7, 2, 3, 2 가 있다고 생각해 봅시다. 여기서 최대로 팔아먹으려면 최대한 큰 비용일 때 팔아야 되는데, 예를 들어 맨 처음 1, 5, 8 은 15일 때 가장 비싸게 팔릴 것입니다.15는 언제 팔아도 비쌀 수가 없죠. 자신이 가장 비싸거든요. 안 사는게 이득입니다.4와 7은 8일 때 가장 비싸게 팔립니다.8은 해봐야 자기 자신일 때 밖에 없습니다. 역시 안 사는게 이득입니다.3은 6일 때 가장 비싸게 팔립니다.6도 안 사는게 이득입니다.즉 주식을 산 시점부터 뒤를 탐색하면서 가장 비쌀 때 파는게 이득이라는 얘긴데, 위의 표를 보고 가장 이..
-
[Android] 프로젝트에 Android의 Hilt를 사용해보자Android 2024. 5. 12. 16:58
Hilt?Android에서 가장 유명한 의존성 주입 (Dependency Injection) 라이브러리입니다. 이전에 있던 Dagger를 기반으로 만들어서 사용법 및 작동 방식도 굉장히 유사한데, 원래 Dagger가 Android를 타겟으로 만든 라이브러리가 아니다보니까 환경 구축 부담 + 러닝 커브 비용 부담 때문에 쓴소리를 많이 먹었다고 합니다. 그래서 좀 더 환경을 구축하기 쉽고 이해하기도 쉬운 Koin을 사용하는 경우도 많았는데요. 그래서 구글이 Android에서 사용하기 편하라고 만든 것이 Hilt입니다. Dagger 기반으로 만들다보니까 비슷한 점도 많고 혼합해서 쓰기도 해서 그냥 Dagger Hilt라고 말하곤 합니다. Hilt 환경 세팅일단 환경 세팅을 해줍시다. 환경을 맞추지 않는다..
-
[알고리즘][백준] 20006. 랭킹전 대기열알고리즘 2024. 5. 10. 01:27
문제https://www.acmicpc.net/problem/20006 문제 아이디어완전한 구현 문제입니다. 플레이어의 수 p(1 ≤ p ≤ 300)와 방의 정원 m(1 ≤ m ≤ 300) 면 300 * 300으로 해도 1초를 못 넘기고, 방에 플레이어를 넣을 때마다 계속 방의 상태를 체크해주면 됩니다. p, m = list(map(int, input().split()))roomList = []for i in range(p): player = list(map(str, input().split())) level = int(player[0]) enter = False for room in roomList: if room[0] >= level - 10 and room[0]
-
[알고리즘][백준] 22233. 가희와 키워드카테고리 없음 2024. 5. 9. 23:15
문제https://www.acmicpc.net/problem/22233 문제 아이디어간단한 맵&파싱 문제입니다. 사실 상 문제에서 하라는대로 하면 끝나긴 합니다.주의할 것은 10^5개이므로 키워드를 리스트에 담아서 키워드를 하나씩 찾아서 지워주면 10^5 * 10^5 이므로 시간 초과입니다. import sysinput = sys.stdin.readlineN, M = list(map(int, input().split()))keywords = {}for i in range(N): keywords[input().rstrip()] = 1for i in range(M): keywordList = list(input().rstrip().split(',')) for keyword in keywor..