전체 글
[TIL/Clean Code] Assignment #02
TIL (Today I Learned) 오늘 읽은 범위 추천사 ~ 1장 깨끗한 코드까지 책에서 기억하고 싶은 내용 훌륭한 소프트웨어 기법 정리 또는 조직 : 적절한 명명법 등과 같은 방법을 사용해 무엇이 어디에 있는지 알아야 한다. 정돈 또는 단정함 : 코드는 누구나 예상하는 위치에 있어야 한다. 청소 또는 정리 : 과거 이력이나 미래 바람을 기억한 주석은 지운다. 청결 또는 표준화 : 일관적인 구현 스타일과 기법의 필요성 생활화 또는 규율 : 관례를 따르고, 자기 작품을 자주 돌아보고, 기꺼이 변경하는 규율 나쁜 코드의 예시 (킬러 앱) 80년대 후반 킬러 앱을 구현한 회사가 있었으나, 그 회사의 개발자들은 출시에 바빠 코드를 마구 작성했다. 기능을 추가할수록 코드는 엉망이 되었고 결국 감당 못할 수준..
[TIL/Clean Code] Assignment #01
책 인증! 다짐! 올바른 코드를 작성하고 있는가에 대한 의문이 들 때가 많았다. 노마드 코더에서 제공하는 클린 코드 챌린지를 통해 책을 끝까지 정독하고! 내 코드에 대한 의심을 없앨 것이다!
[Python/파이썬] 백준 1644번: 소수의 연속합
문제 풀이 에라토스테네스의 체, 두 포인터를 사용해 풀면 된다. 구간 합은 선택사항..ㅎㅎ 나동빈님의 강의에 전부 정리되어있다. https://www.youtube.com/watch?v=cswJ1h-How0&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=9 코드 import sys, math input = sys.stdin.readline n = int(input()) intervalSum = [0] isPrimeList = [True for _ in range(n + 1)] for i in range(2, int(math.sqrt(n)) + 1): if isPrimeList[i]: for j in range(i * 2, n + 1, i): isPrimeList[j] ..
[Android/Kotlin] MVVM 패턴, AAC
MVVM 패턴 정의 Model, View, ViewModel의 약자 Model MVC와 동일 주로 DB 사용 또는 API 호출을 의미 View Activity, Fragment (xml 파일 + Activity, Fragment 파일) 사용자의 입력을 받음 ViewModel의 데이터를 관찰하여 UI 갱신 ViewModel의 레퍼런스를 가질 수 있음 UI 변경과 관련된 사항만 처리 (Model을 알면 안 됨) ViewModel View를 통해 사용자 입력을 받으면 Model에 알맞은 데이터 요청 Model에서 받아온 데이터를 알맞게 가공하여 값 갱신 View, Context의 존재를 알면 안 됨 MVVM 패턴에서 View와 Model 사이의 의존성이 존재하면 안 됨 (View는 ViewModel만 관찰하는..
[Python/파이썬] 백준 1781번: 컵라면
문제 풀이 1. 데드라인을 기준으로 오름차순 정렬 문제 배열 데드라인 1 1 2 2 3 3 6 컵라면 7 6 4 5 1 2 1 2. 우선순위 큐에 첫 번째 문제를 넣는다. 우선순위 큐 날짜 1일 2일 3일 4일 5일 데드라인 1 컵라면 7 1일 차, 1문제 우선순위 큐에 문제를 삽입 = 해당 문제를 품 만약 우선순위 큐에 2개의 문제를 삽입했다면, 2일이 지난 셈이다. (한 문제당 하루가 걸리므로) 3. 우선순위 큐에 두 번째 문제를 삽입 우선순위 큐 날짜 1일 2일 3일 4일 5일 데드라인 1 1 컵라면 6 7 2일 차, 2문제 2일차일 때 데드라인이 1일까지인 문제는 풀 수 없다! 또한 동호는 마지막에 삽입된 데드라인보다 많은 문제를 풀 수 없다. 따라서 마지막에 삽입된 문제의 데드라인 < 현재 날짜..
[Python/파이썬] 백준 1202번: 보석 도둑
문제 풀이 가방과 보석을 정렬한 후, 각 가방에 넣을 수 있는 보석 가격의 최대 값을 구한다. 1. 초기 값 보석 무게 1 2 5 가격 65 99 23 가방 무게 2 10 소유한 보석의 가격 0 0 2. 첫 번째 가방(2)에 들어갈 수 있는 보석을 우선순위 큐에 저장 보석 무게 5 가격 23 (배열 보석에서 무게가 1, 2인 값을 빼내어 우선순위 큐에 저장함) 우선순위 큐 (기준 : 가격) 무게 2 1 가격 99 65 (첫 번째 가방의 무게는 2이고, 2보다 작은 보석들을 우선순위 큐에 넣음) 가방 무게 2 10 소유한 보석의 가격 99 0 (가장 큰 값인 99를 가방(2)에 추가) 우선순위 큐 (기준 : 가격), 첫 번재 가방에 가격이 99인 보석을 넣어줬으므로 pop 무게 1 가격 65 3. 남은 보..
[Python/파이썬] 백준 1208번: 부분수열의 합 2
문제 풀이 1. 주어진 수열을 절반으로 나눈다. [-7, -3, -2, 5, 8] -> [-7, -3], [-2, 5, 8] 2. 나눠진 수열의 부분 수열을 구한다. A : [-7, -3] -> [-7], [-3], [-7, -3] B : [-2, 5, 8] -> [-2], [5], [8], [-2, 5], [-2, 8], [5, 8], [-2, 5, 8] 3. A의 부분 수열 중 하나를 선택하고, B의 부분 수열 중 하나를 선택하면 모든 부분 수열을 구할 수 있다. ex) [-7, -3, 5] = [-7, -3] + [5] 4. A, B 부분 수열의 합을 배열에 저장한다. sumA : [-7, -3, -10] sumB : [-2, 3, 5, 6, 8, 11, 13] 5. sumA, sumB 그리고 su..
[Python/파이썬] 백준 15732번: 도토리 숨기기
문제 풀이 입력이 다음과 같을 때, 200 2 5 100 150 10 110 150 15 상자의 번호는 0 ~ 200까지 있다. 우선 중간 값(100)을 구하고, 0번 상자에서 100번 상자까지의 도토리 개수를 구한다. 도토리 개수에 따라 이분 탐색을 수행하면 된다. 코드 import sys input = sys.stdin.readline #도토리 수 구하기 def calAcorn(rules, boxNum): cnt = 0 for start, end, margin in rules: if boxNum < start: continue end = min(boxNum, end) cnt += (end - start) // margin + 1 return cnt def binarySearch(rules, end, ..
[Android/Kotlin] MVP 패턴
MVP 패턴 MVC 패턴이 뭔지 모른다면 먼저 이 글을 보고 오자! https://ku-hug.tistory.com/187 [Android/Kotlin] MVC 패턴 MVC 패턴 디자인 패턴이 뭔지 모른다면 먼저 이 글을 보고 오자! https://ku-hug.tistory.com/181 MVC -> MVP -> MVVM 순서로 공부하겠다. 디자인 패턴이란? 쉽게 말하면 디자인 패턴 = 검증" data-og-host="ku-hu.. ku-hug.tistory.com Model, View, Presenter의 약자 Model MVC의 Model과 동일 View MVC의 View + MVC의 Controller (= xml 파일과 Fragment, Activity 파일) 사용자의 입력을 받고 이벤트를 Pre..
[Android/Kotlin] MVC 패턴
MVC 패턴 디자인 패턴이 뭔지 모른다면 먼저 이 글을 보고 오자! https://ku-hug.tistory.com/181 [Android] 디자인 패턴(참고 링크 모음) 프로젝트에 MVVM패턴을 적용하고 있으나 정확한 개념이 숙지되지 않아 정리해보려 한다. 우선 디자인 패턴 -> MVC -> MVP -> MVVM 순서로 공부하겠다. 디자인 패턴이란? 쉽게 말하면 디자인 패턴 = 검증 ku-hug.tistory.com Model, View, Controller의 약자. Model 출력할 데이터를 갖고 각종 처리를 한다. (데이터 가공, 추가, 삭제) View 데이터를 시각화한 부분 모델이 처리한 데이터를 사용 보여주는 기능만 담당 (로직이나 데이터가 들어가면 안됨) Controller 사용자의 요청을 처..