전체 글(355)
-
오버헤드(overhead)와 스택 오버플로우(Stack Overflow), 왜 발생하고 어떻게 해결할까?
오버헤드(overhead)란?어떤 작업이나 시스템을 운영할 때 추가적으로 드는 비용, 시간 메모리 같은 리소스를 의미한다.> 코드 실행 오버헤드불필요하게 많은 객체 생성 시 발생복잡한 연산 수행 시 발생⇒ 결과적으로 실행 속도가 느려짐> 메모리 오버헤드필요 이상으로 큰 데이터 로드할 때 발생캐시를 많이 사용할 때 발생⇒ 결과적으로 메모리가 낭비됨> 네트워크 오버헤드짧은 데이터를 보내는데도 요청/응답을 위한 추가적인 정보가 많을 때 발생⇒ 결과적으로 더 많은 트래픽이 발생함 대충 “뭔가를 하려는데 쓸데없이 부담되는 짐이 추가된다” 정도의 느낌.오버헤드 성능 최적화 시 고려해야 할 사항재귀보다는 반복문 사용 (StackOverflow 방지)불필요한 객체 생성 줄이기 (GC 부하 감소)쓰레드보다는 코루틴 사용..
2025.03.04 -
[프로그래머스/Kotlin]Lv2 - 완전범죄
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 해석문제 설명A도둑과 B도둑이 팀을 이루어 모든 물건을 훔치려고 합니다. 단, 각 도둑이 물건을 훔칠 때 남기는 흔적이 누적되면 경찰에 붙잡히기 때문에, 두 도둑 중 누구도 경찰에 붙잡히지 않도록 흔적을 최소화해야 합니다.물건을 훔칠 때 조건은 아래와 같습니다.물건 i를 훔칠 때,A도둑이 훔치면 info[i][0]개의 A에 대한 흔적을 남깁니다.B도둑이 훔치면 info[i][1]개의 B에 대한 흔적을 남깁니다.각 물건에 대해 A도둑과 B도둑이 남기는 흔적의 개수는 1 이상 3 이하입니다.경찰에 붙잡히는 조건은 아래와 같습니다.A도둑은 자신이 남긴 흔적의..
2025.03.02 -
Jetpack Compose에서 TextField와 OutlinedTextField의 차이점
1. TextField기본적인 Material Style의 입력 필드내부에 밑줄이 있는 형태Material Design System에서 기본적으로 제공하는 스타일보통 일반적인 텍스트 입력 필드에 사용TextField( value = text, onValueChange = { text = it }, label = { Text("기본 TextField") })2. OutlinedTextField테두리가 있는 입력 필드OutlinedTextField는 사각형 외곽선(border)이 있는 형태더 명확한 경계를 제공하여 구분이 필요한 경우 사용3. 사용 시점TextField기본적인 입력 필드가 필요한 경우배경과 자연스럽게 어울려야 하는 경우OutlinedTextField입력 필드를 더 명확하게 구..
2025.02.28 -
[LeetCode/Kotlin]Easy - 507. Perfect Number
https://leetcode.com/problems/perfect-number/description/문제A perfect number is a positive integer that is equal to the sum of its positive divisors, excluding the number itself. A divisor of an integer x is an integer that can divide x evenly.Given an integer n, return true if n is a perfect number, otherwise return false.Example 1:Input: num = 28Output: trueExplanation: 28 = 1 + 2 + 4 + 7 + 141..
2025.02.28 -
Kotlin에서 유용한 고차 함수 정리
나는 C언어, Java로 코딩을 처음 배워서 그런가 함수형 언어에는 익숙해지지 않는다.Kotlin의 최대 장점인 고차 함수도 제대로 활용하지 못해 코딩테스트 공부를 할 때 애를 많이 먹었다.그래서 유용한 고차 함수들을 정리해봤다.1. map - 리스트 변환할 때 사용❌ Java 스타일List names = new ArrayList();for (User user : users) { names.add(user.getName());}✅ Kotlin 스타일 (고차 함수 사용)val names = users.map { it.name }2. filter - 특정 조건의 요소만 선택❌ Java 스타일List adults = new ArrayList();for (User user : users) { if (..
2025.02.27 -
Compose에서 네비게이션을 통한 데이터 전달 및 savedStateHandle 활용
프로젝트 구축하는 과정에서 문제가 하나 발생했다. ✅ 문제 상황AScreen에서 BScreen으로 화면 이동 후 BScreen에서 선택한 값을 AScreen으로 돌려주기이 때, ViewModel을 통해 돌려주면 viewModel이 초기화 되는 이슈 발생✅ 해결 방법NavController의 savedStateHandle을 이용하여 화면 간 데이터 전달ViewModel을 통해 데이터를 전달할 때, 전달된 데이터가 초기화 되는 현상이 발생했다.당연하다. ViewModel을 새로 만드는 멍청한 짓을 했으니까 ㅋ 그래서 찾아낸 다른 방법! NavController 이용하기~화면을 이동할 때 사용하는 Navigation Component는 데이터를 전달하는 savedStateHandle을 지원한다.이걸 활용하면 ..
2025.02.26