전체 글
뷰 바인딩
뷰 모델을 작성하면서 findViewById에 불편함을 느꼇다. 작년까지만 해도 코틀린 익스텐션을 지원했지만 이번 년도에는 지원을 하지 않는다고 한다. 코틀린 익스텐션을 지원하지 않는 이유를 찾아 보니 아래와 같은 문제점이 있어서 지원하지 않는다고 한다. 전역 네임스페이스 오염 코틀린에서만 실행됨 Null 허용 여부를 알려주지 않음 안드로이드는 코틀린 익스텐션 대신 뷰 바인딩을 권장을 한다. 뷰 바인딩은 Null로부터 안전하며, 빠른 컴파일이 된다는 장점이 있다. 적용방법 app.gradle android{ buildFeatures{ viewBinding = true } } MainActivity.kt (저번 뷰모델글 중 메인 엑티비티랑 비교하면 많이 줄어들었습니다) package com.example...
ViewModel 및 사용
뷰 모델은 위의 사진처럼 생명주기에 영향을 받지 않는다. 뷰 모델은 LiveData라는 것을 가진다. 그래서 생명주기로 인해서 pause 또는 Resume 등등 어떤 상황이 일어나도 LiveData를 계속 가질 수 있다. 라이브 데이터의 장점으로는 UI와 데이터 상태의 일치 보장, 메모리 누출 없음 등의 장점을 가지고 있다. (출처 - ViewModel 개요 | Android 개발자 | Android Developers) ViewModel을 실제로 만들어보기 위해서 프로젝트를 제작했다. app.gradle dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core..
알고리즘 문제 예상 대진표 c++
#include using namespace std; int cal(int n){ int iResult = n / 2; if(n % 2 == 1) iResult+=1; return iResult; } int solution(int n, int a, int b) { int iRound = 1; // a > b int iBig = a; int iSmall = b; if(a < b){ iBig = b; iSmall = a; } // 만날 경우 끝남 while(iBig - 1 != iSmall || iBig % 2 != 0){ // iBig 계산 iBig = cal(iBig); // iSmall 계산 iSmall = cal(iSmall); // 라운드 카운트 iRound++; } return iRound; }
알고리즘 오픈채팅방 문제
#include #include #include #include #include using namespace std; vector solution(vector record) { vector answer; string str; map nickname; // Change 확인 for(int i =0; i > str; ss >> str; string uid = str; ss >> str; string name = str; if(nickname[uid] == ""){ nickname[uid] = name; } else if(nickname[uid] != ..