전체 글

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

[Android] 로그인 기능 구현 (2) - UiState

이전에 Activity를 작성한 적이 있다. 액티비티에서는 화면의 동작들을 처리한다면 UiState는 화면의 상태값을 지정하고, 저장하는 역할을 한다. 아래는 LoginUiState의 전체코드이다. 코드 data class LoginUiState( val email: String = "", val password: String = "", val isLoading: Boolean = false, val successToSignIn: Boolean = false, val userMessage: String? = null ) { val isInputValid: Boolean get() = isEmailValid && isPasswordValid private val isEmailValid: Boolean ge..

Android/Study

[Android] View가 그려지는 순서

View가 그려지는 과정에 대해서 알아보자. 이를 알아야하는 이유는 크게 2가지가 있다. Ui를 그리는 기본 구성요소가 바로 View이기 때문이다. Custrom View를 만들기위해서는 위 과정을 알아야 한다. 전위순회 방식을 쓰기 때문에, 부모 부터 자식 뷰 순서로 그려지게 됨 measure 뷰의 크기를 계산 모든 뷰는 각각 자신의 width, height 를 계산 measure 과정에서, 부모 - 자식 뷰간의 크기 정보 전달을 위해 2가지 클래스 사용 ViewGroup.LayoutParams : 자식 뷰가 부모 뷰에게 자신이 어떻게 측정되고 위치를 정할지 요청 할 때 사용, (how big) DP, PX.. : 자식뷰가 원하는 사이즈 MATCH_PARENT : 부모 뷰 사이즈와 똑같이 자식뷰 사이즈..

Android/Study

[Android] Activity 생명 주기(Life Cycle)

안드로이드 액티비티(Activity)에는 생명주기가 존재한다. 이에 따라 개발할때 고려해야 할 것들이 있는데, 우선 생명주기에 대해서 알아보자. 액티비티 생명주기는 onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestory()순으로 실행되며, 경우에 따라서 onRestart() 메소드가 호출되기도 한다. 공식문서에 따르면, 생명주기를 이해하고, 적절한 수명주기 콜백을 잘 구현하면 이러한 문제들을 해결하는데에 도움이 된다고 한다. 또한 앱의 완성도와 안정석을 높이기 위해서라도 반드시 알아야하는 개념이라고 한다. 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제 사용자가 앱을 활발하게 사용..

Android/Study

[Android] 안드로이드 4대 컴포넌트

안드로이드 4대 컴포넌트 란? 컴포넌트란 구성요소를 의미한다. 다시 말해서 안드로이드 4대 컴포넌트란 안드로이드 앱을 구성하는데 필요한 4개의 요소를 의미한다. 안드로이드 4대 컴포넌트에는 액티비티(Activity), 서비스(Service), 방송수신자(Broadcast Receiver), 콘테트 제공자(Content Provider)가 있다. Android 앱의 필수적인 구성요소로, 각각은 시스템이나 앱에 들어올 수 있는 진입점이다. 특징 각 컴포넌트는 독립적으로 존재한다. 각 컴포넌트는 고유의 기능을 수행한다. 각 컴포넌트는 인텐트를 통해서 서로 상호작용한다. 1. 액티비티(Activity) 사용자와 상호작용을 담당하는 인터페이스입니다. 앱을 실행을 할 때는 앱을 전체적으로 호출하는 것이 아니라 앱의..

BaekJoon

[BaekJoon] 2565번 전깃줄 (Java) 문제 풀이 [Gold 5]

문제 https://www.acmicpc.net/problem/2565 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 어떻게 풀 것인가? 처음에는 아이디어가 떠오르지 않아서 많이 어려웠던 문제였다. 그래서 문제에 대한 힌트를 얻기위해서 아래에 알고리즘 분류를 확인하였으나, 이게 무슨... DP문제였다. 문제가 너무 어려웠다... 3시간의 고민 끝에 다른 분의 풀이를 참고하여 문제를 풀 수 있었다. 참고 사항에 그분의 풀이를 업로드하였다. 교차 여부를 구현으로 한다면 너무나 어렵다. 그렇다면 여기서 역으로 생각해야했..

Android/Study

[Android] 졸업 프로젝트 개요

블로그에 지난 졸업프로젝트에서 했던 주요 기능부분을 기록으로 남기려고한다. 조금? 오랜 시간이 지났지만 기억을 되살려서 기록을 해보자. 팀 구성 Android 1명 iOS 1명 BackEnd 2명 작품 개요 작품 이름 : Bong# 작품 설명 : 재능 교환 마켓 앱 어플리케이션은 기존에 재능과 재화를 교환하던 방식에서 벗어나 재능과 재능을 교환하는 서비스입니다. 자신이 가지고 있는 재능을 통해 상대에게 재능을 가르치고 상대의 재능을 배울 수 있는 기회를 제공합니다. 사용자는 자신의 프로필에 자신이 잘하는 재능을 기록할 수 있습니다. 예를들어 코딩을 잘하는 사람은 IT를 그리고 운동을 잘하는 사람은 헬스, 골프, 축구등을 기록할 수 있습니다. 그리고 사용자는 올라오는 게시물들을 통해 사용자가 원하는 재능과..

Programming Language/Java

[Java] 변수(Variable)

변수란? 프로그래밍에서 변수란, 값을 저장할 수 있는 메모리상의 공간을 의미한다. 이 공간에서 저장된 값은 변경될 수 있기 때문에 변수라고 불린다. 새로운 값을 저장하면 기존의 값은 사라진다. 변수의 선언과 초기화 변수를 사용하려면 변수를 선언해야한다. int year = 0; int age = 14; 변수 타입 : 변수에 저장될 값이 어떤 타입(type)인지를 지정하는 것 변수 이름 : 변수에 붙인 이름 변수를 선언하면, 메모리의 빈 공간에 변수타입에 알맞은 크기의 저장공간이 확보되고, 앞으로 이 저장공간은 변수이름을 통해서 사용할 수 있게 된다. 변수를 선언한 이후에는 변수를 사용할 수 있으나 위 예제처럼 어떠한 값으로 변수를 초기화(initialization)해야한다. 메모리는 여러 프로그램이 공유..

BaekJoon

[BaekJoon] 2470번 두 용액 (Java) 문제 풀이 [Gold 5]

문제 https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 어떻게 풀 것인가? 이 문제를 보자마자 떠올랐던 것은 바로 "투포인터를 이용한 이분탐색 알고리즘" 이었다. 이분 탐색과 result 배열을 이용하여 계속해서 0과 가까운 것을 비교하면서 찾아간다. 이것은 아마 코드를 보는 것이 이해가 더 빠를 것이다. 풀면서 놓쳤던점 X 이 문제를 통해 얻어갈 것 이분탐색에 대한 응용 내 코드 import java.io.Bu..

BaekJoon

[BaekJoon] 2225번 합분해 (Java) 문제 풀이 [Gold 5]

문제 https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 어떻게 풀 것인가? 문제는 상당히 짧다. 하지만 고민은 많이해야하는 문제였다. 우선적으로 문제에 대해서 고민을 하면 다이나믹 프로그래밍이라는 것을 알 수 있다. 하지만 다이나믹 프로그래밍에서 중요한 점화식에 대해서 고민이 상당히 오래걸렸다. (내가 오랜만에 풀어서 그런걸 수도 있다....) 나는 문제를 2시간 가량 고민하다가 결국엔 다른 분의 풀이를 참조했다. 아래를 잘 보자. 1. N=1일때 K=1인경우 : 1가지 (1) K=2인경우 : 2가지 (1+0, 0+1) K=3인경우 : 3가지 (0+1+1, 1+0+1, 1..

회고록

2023년 11월 ~ 12월 회고록

이 글은 저의 2023년 11월 ~ 12월까지의 회고록입니다. 이전의 회고록은 https://superohinsung.tistory.com/251 아닌 것 같았다. 알고리즘 실력이 올랐는가? -> 아닌 것 같았다. CS를 탄탄하게 잡았는가? -> 아닌 것 같았다. 성장하는 느낌을 받고 싶었는데, 내가 정말 치열하게 살았는가? -> 아닌 것 같았다. 올 한해 동안 취업에서 쓴 맛을 봤고 다양한 원인이 있었겠지만 그냥 내 순수 실력 부족이겠구나 라는 생각이 많이 들었다. 그래서 그러한 실력을 상승 시킬 준비를 다시해서 취업 도전을 해봐야겠다는 생각을 했다. 사실 나는 싸피만 오랫동안 바라봐왔다. 학점이 높은 것도 아니고 (정말정말 매우매우 낮다....) 이로 인해서 사실 걱정이 많았다. 우선적으로 대기업 원..

BaekJoon

[BaekJoon] 14503번 로봇 청소기 (Java) 문제 풀이 [Gold 5]

문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 어떻게 풀 것인가? 처음에 문제를 이해하는 것이 많이 어려웠다. 주어진 문제에 따르면 현재 칸이 아직 청소되지 않은 경우, 현재 칸을 청소한다. 현재 칸의 주변 4칸 중 청소되지 않은 빈 칸이 없는 경우, 바라보는 방향을 유지한 채로 한 칸 후진할 수 있다면 한 칸 후진하고 1번으로 돌아간다. 바라보는 방향의 뒤쪽 칸이 벽이라 후진할 수 없다..

Computer Science/Network

[Network] 무선 통신망의 방향성인 5G, 6G 기술에 대해서 각각 그 특징과 차이를 조사하고, 요약

본 포스팅은 학교 수업에서 제출했던 과제입니다. 5G란 무엇인가 5G통신은 쉽게 말하면, ‘1차선 도로가 10차선 도로로 변했다’는 것입니다. 대역폭이 넓어졌으니 지금보다 10배 이상 더 빠르게 음성, 영상 등을 주고 받을 수 있습니다. 뒷 부분에 작성을 하겠지만, 이 때문에 초고속, 초저지연성, 초연결성등이 5G의 가장 큰 특징으로 꼽힙니다. 기존의 4G의 속도는 1Gbps입니다. 하지만 5G 기술의 이론적인 최대 속도는 20Gbps 입니다. 위와 같은 빠르다는 특징으로 현대사회에서 생활적으로 산업적으로 많은 변화를 가져다 주고 있습니다. 5G 기술은 어떻게 동작할까? 그리고 특징은 무엇이 있을까? 5G 기술은 네트워크 아키텍처 전반에서 여러가지 발전된 요소를 채택하였습니다. 먼저, 5G는 다양한 주파..

Tenacity_Dev
인성의 개발 공부 노트