문제 링크 https://softeer.ai/practice/6288 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제 풀이 import sys input = sys.stdin.readline w, n = map(int, input().split()) sum_weight = 0 price = 0 metals = [] for _ in range(n): m, p = map(int, input().split()) metals.append([m, p]) metals.sort(key=lambda x: -x[1]) idx = -1 while idx w: break sum_weight += metals[idx][0] price += metals[idx][1] * metals[idx][0] p..
전체 글
문제 링크 https://softeer.ai/practice/6282 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제 풀이 def dfs(x, y): if x = n or y = n: return False if graph[x][y] == 1 and not visited[x][y]: global count visited[x][y] = 1 count += 1 for i in range(4): nx = x + dx[i] ny = y + dy[i] dfs(nx, ny) return True return False n = int(input()) graph = [list(map(int, input())) for _ in range(n)] visited..
문제 링크 https://softeer.ai/practice/6279 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제 풀이 그리디하게 앞에서부터 사용할 수 있는 부품을 차례로 집는 것이 최댓값을 찾을 수 있는 방법이라 생각했고, 그 방법대로 깔끔하게 해결할 수 있었습니다. n, k = map(int, input().split()) arr = list(input()) result = 0 for i in range(len(arr)): if arr[i] == 'P': for j in range(i - k, i + k + 1): if 0
Serial 통신 (시리얼 통신, 직렬 통신) 임베디드 시스템은 각종 프로세서와 회로들 간 통신하며 동작합니다. 이에 따라, 데이터를 주고 받는 표준 프로토콜이 필요합니다. 프로토콜에는 크게 두 종류가 있습니다. Parallel (병렬) / Serial (직렬) Parallel 다수의 비트를 한 번에 전송하는 방법 - 보통 8, 16 혹은 그 이상의 라인을 통해 동시에 데이터를 전송 - 타이밍에 맞춰 모든 라인이 같이 동작할 수 있도록 CLK(clock) 라인이 필요하므로 8-bit data bus의 경우 9라인이 필요합니다. Serial 데이터를 스트림으로 바꾸는 직렬화 과정을 거쳐서 한 번에 한 비트씩 전송하는 방법 - CLK 라인 포함 2라인으로 데이터를 전송 Parallel vs Serial Pa..
코루틴 비동기 경량 스레드 - "Co: 함께" + "routine: 작업 처리단위" = "Coroutine: 어떤 작업을 함께 처리한다." - 예전에는 ANR 오류를 해결하기 위해 스레드-핸들러나 AsyncTask를 이용했음. 하지만 API 30에서 deprecated되었고 코루틴 이용을 권장하고 있음 - 일반적인 스레드는 자유로운 제어가 힘들고 구현도 복잡하지만, 코루틴은 가볍고 많은 기능을 제공함 CoroutineContext 코루틴 처리를 어떻게 할 것인지에 대한 요소들의 집합 - Dispatcher : 코루틴을 처리할 스레드를 셋팅하고 할당하는 역할 - Job : 생성된 코루틴을 컨트롤 (생명 주기, 부모 자식 관계 정리 및 관리) Coroutine Dispatcher - 코루틴을 스레드에 배분하..
DataStore - Android Jetpack 라이브러리 중 하나 - 프로토콜 버퍼를 사용하여 키-값 쌍 혹은 유형이 지정된 객체를 저장할 수 있는 데이터 저장소 솔루션 - 코루틴 및 Flow를 사용하여 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장하는 것이 특징 SharedPreferences vs DataStore DataStore 특징 - 비동기적으로 작동 (코루틴과 Flow를 통해 읽고 쓰기에 대한 비동기 API 제공) - UI 스레드를 호출해도 안전 (Dispathers.IO 밑에서 작동) - Runtime Exceptions로부터 안전 - SharedPreferences 데이터와의 병합 기능 - 일관성이 보장되는 트랜잭션 API를 제공 DataStore 종류 1) Preferences..
옥수환 - Hilt와 함께 하는 안드로이드 의존성 주입을 보고 작성했습니다. 의존성 주입 생성자 또는 메서드 등을 통해 외부로부터 생성된 객체를 전달받는 것 의존성 주입의 특징 - 클래스 간 결합도를 느슨하게 함 - 인터페이스 기반으로 설계, 코드를 유연하게 함 - Stub 또는 Mock 객체를 사용하여 단위테스트를 하기가 더욱 쉬워짐 안드로이드에서 의존성 주입 어려운 이유? - Android 클래스가 Framework에 의해 인스턴스화 됨 ( -> 클래스들 내부에 개발자가 직접 생성자를 만들거나 생성자의 매개변수를 전달할 수 있는 방법이 없음) 의존성 주입 프레임워크의 궁극적인 목표 - 정확한 사용방법을 제안 - 쉬운 설정 방법 - 중요한 것들에 집중할 수 있도록 함 Hilt 애플리케이션에서 DI를 사..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 def solution(number, k): answer = [] for n in number: while answer and k > 0 and answer[-1] < n: answer.pop() k -= 1 answer.append(n) return ''.join(answer[:len(number) - k]) combinations를 활용해서 최대를 구하는 방식을 생각해보았..