전체 글

I’m currently learning Android, ComputerScience, Algorithm and etc....
Git

[Git] Fork 란?

fork 는 다른 사람의 github repository를 복제하여 어떤 부분을 수정, 추가, 삭제를 용이하도록 해주는 복제기능입니다. fork 한 저장소는 원본(repository)와 연결되어있다. 이때 forked된 repository에서 Sync fork를 누르면 원본에서의 변화를 그대로 반영 할 수 있다. 아래의 그림에서는 HSU-DCnM-Study이라는 Organization 의 Algorithm-DataStructure이라는 repository를 Fork 해온 것이다. 그 후 original repository에 변경사항을 적용하고 싶으면 해당 저장소에 pull request를 해야한다. pull request 하기 전까지는 내 github에 있는 forked repository에만 chang..

Android/Study

[Android] CustomView(커스텀 뷰)

커스텀뷰에 대해서 정리를 하려고 한다. 커스텀 뷰 란? 안드로이드 앱을 개발하다 보면 일반적인 뷰로는 내가 원하는 결과를 만들 수 없는 경우가 발생하는데, 이런 경우 직접 ‘커스텀 뷰’를 만들어야 한다. 안드로이드의 UI 요소는 모두 View를 상속한다. 아래에 그림을 참고하자. View를 상속하여 UI 요소의 외형을 그리고 UI이벤트를 처리한다. CustomView를 사용하는 이유는 View의 재사용을 위해서다. 디자인이나 React 같은 프레임워크에서는 이런 개념을 컴포넌트라고 부른다. 디자인과 UX의 통일성을 유지하기 위해 동일한 형태의 UI를 여러 군데에서 사용하게 되는데 이런 UI를 사용하는 곳마다 각각 구현하기에는 코드의 길이도 길어지고, 수정 및 관리하기에도 어렵다. CustomView의 핵..

Android/Study

[Android] 안드로이드 취업시 회사에서 요구하는 기본적인 사항

Clean architecture MVVM, MVP 등등 아키택처 패턴 Hilt를 이용한 의존성 주입 Paging 3 Flow Room 유닛테스트, UI테스트 Retrofit 비동기처리(Couroutine) 이미지 활용 미디어 활용(Exployer) Custom UI 및 다양한 디자인 UI 경험 안드로이드 기본 기능 외부 리소스 활용(오픈 APi, Glide 등) JetPack FireBase 할게 너무 많다....

Git

[Git] Branch Protection 이란?

Branch를 보호하기 위한, 깃에서 제공하는 보호 장치입니다. 여러 사람들이 동시에 같은 코드 베이스에서 작업을 하다보면 여러가지 문제가 생길 수 있습니다. 허락받지 않은 사람이 무질서하게 코드를 작성하고 머지하는 경우도 발생하고, 설령 허락을 받은 멤버가 코드를 작성하고 머지하더라도 그 코드가 테스팅을 거치지 않은 문제가 많은? 코드 일수 도 있습니다. 실례로 제가 프로젝트를 진행하였을때도, 자기 짠 코드는 틀릴 일이 없다고 자신만만하게 말하시던 분 코드를 머지한 이후에 크게 문제가 발생한 경우도 있었습니다. 추후에 테스팅에 대한 중요성를 설명드리겠지만, 머지한 이후 문제가 발생한 경우 여러분들이 작업하는 프로젝트 혹은 서비스가 크게 망가질 수 도 있습니다. 그렇기에 깃허브에서는 Pull Reques..

Programming Language/Kotlin

[Kotlin] 코틀린으로 앱 개발시 자바보다 이점

표현력과 간결함 코틀린의 최신 언어 기법을 이용하면 훨씬 간결한 구문으로 프로그램을 작성할 수 있습니다. 같은 로직을 자바와 코틀린으로 각각 작성해 보면 코틀린의 코드가 훨씬 간결하다는 것을 알 수 있습니다. 안전한 코드(safer code) 코틀린은 널안정성을 제공합니다. 객체지향 프로그래밍에선느 객체는 널 상태일 수 있으며, 이때 런타임 오류인 널 포인트 예외(NullPointException)가 발생할 수 있습니다. 따라서 객체가 널인 상황을 고려해 개발해야 하는데, 코틀린에서는 변수를널 허용(Nullable)과 널 불허용(not null)으로 구분해서 선언합니다. 이로써 널과 관련된 여러 부분을 컴파일러가 해결해줍니다. 상호운용성(interoperable) 코틀린은 자바와 100% 호환합니다. 따..

BaekJoon

[백준 알고리즘] 1715번 : 카드 정렬하기 (Python) 문제 풀이

문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 20)..

BaekJoon

[백준 알고리즘] 2217번 : 로프 (Python) 문제 풀이

문제 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. 입력 첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가 버틸 수..

BaekJoon

[백준 알고리즘] 1541번 : 잃어버린 괄호 (Python) 문제 풀이

문제 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 출력 첫째 줄에 정답을 출력한다. https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄..

BaekJoon

[백준 알고리즘] 1026번 : 보물 (Python) 문제 풀이

문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 출력 첫째 줄에 S의 최솟값을 출력한다. ht..

BaekJoon

[백준 알고리즘] 1931번 : 회의실 배정 (Python) 문제 풀이

문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231-1보다 작거..

BaekJoon

[백준 알고리즘] 1002번 : 터렛 (C++) 문제 풀이

https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 처음 이 문제를 보았을 때, 좌표 개념이 들어가서 어렵다고 생각할 수 있지만, 정말 쉬운?? 수학 문제이다. 결국엔 조규현과 백승환의 범위 즉, 원에 겹치는 교점의 개수를 찾는 문제이다. 자 그렇다면 이제는 케이스를 나눠야 한다. 1. 두 원이 완전히 겹치는 경우(좌표와 반지름의 길이가 전부 같은 경우) 2. 두 원이 완전히 겹치지 않는 경우(좌표는 같으나 반지름의 길이가 같지 않은 경우) 3. 두 원의 교점이 2개인 경우 4. 두 원의 교점이 1개..

BaekJoon

[백준 알고리즘] 2609번 : 최대공약수와 최소공배수 (C++) 문제 풀이

문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. 출처 Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2004 > 중등부 1번 Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2004 > 고등부 1번 데이터를 추가한 사람: circlecho, jsh587 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 ..

Tenacity_Dev
인성의 개발 공부 노트