목록전체 (195)
코딩하기 좋은날
모든 소스는 Kotline 으로 작성 되었습니다. 안드로이드 내부 DB로 Sqlite를 많이 사용 하였지만 Realm이 장점이 많아 요즘 많이 사용한다고 합니다. 검색을 하면 여러 장점들을 찾을 수 있으니 궁금 하신 분들은 찾아 보시기 바랍니다. 저도 한번도 안써봤기 때문에 간단하게 CRUD 동작을 하는 예제 프로그램을 만들어 보았습니다. 이전 게시글에서 만들었던 앱의 소스코드에 Realm 을 관리하는 코드를 추가 시키고 fragment의 textview에서 CRUD테스트를 한번 해보겠습니다. 우선 Realm을 사용하기 위해서 프로젝트 수준의 build.gradle에 아래의 코드를 추가 해 줍니다. classpath 'io.realm:realm-gradle-plugin:10.0.0-ALPHA.1' 그리고..
모든 코드는 Kotlin으로 작성 되었습니다. Navigation 과 Frament 를 이용하면 기존에 화면 전환을 위해 여러 Activity를 만들고 상황에 따라 Activity를 전환 하는것이 아니라 MainActivity를 두고 Navagation이라는 기능을 통해 만들어놓은 Fragment로 이동하는 것이 가능합니다. 이것이 Andriod Jetpack 에 추가된 Navigation 이라는 기능입니다. Navigation을 이용해 fragment간 화면 전환과 bundle을 통한 데이터를 전달하는 앱을 하나 만들어 보겠습니다. 우선 Navigation을 사용하기 위해서 build.gradle에 아래와 같은 dependency를 추가 해줍니다. dependencies { def nav_version..
Gradle 이란? 안드로이드 스튜디오에서 프로젝트를 생성하면 gradle scripts 라는 코끼리 모양(?)의 항목이 있고 그하위에 여러가지 .gradle 파일들이 있는것을 보셨을 것입니다. 이녀석은 프로젝트를 컴파일하고 실행시키는 데 필요한 일을 자동으로 해줍니다. 좀더 자세히 말하면 자동화된 빌드 시스템이며 빌드 구성 파일들을 통해 프로젝트 빌드가 구성되고 관리되게 해줍니다. gradle 내부에 프로젝트 빌드 방법이나, 프로젝트 빌드에 필요한 모듈간 dependencies 관계 등이 정의되게 됩니다. gradle은 개발자에게 유연성을 제공한다는 장점을 가지고 있다고 합니다. 플러그인을 사용하여 다른 환경에 통합 될 수 있고 안드로이드의 경우 안드로이드 스튜디오 플러그인을 통해 gradle이 통합되..
이 글의 소스코드는 모두 Kotlin으로 작성되어 있습니다. RecyclerView는 ListView의 좀더 발전된 형태라고 보시면 될 것 같습니다. ListView 가 스크롤되어 화면에서 벗어났을 때 새로운 뷰를 생성하는 대신 RecyclerView는 그것을 재사용하므로 성능 향상에 이점을 얻을 수 있습니다. 따라서 어떤 일련의 목록들을 나타내고 싶을 때 사용을 하는 것이고 여기에 CardView를 이용하여 이러한 각 목록들을 카드 형태로 이쁘게 만들 수 있습니다. 우선 이둘을 사용하기 위해서는 Module: app 에 해당하는 build.gradle로가서 각각을 implementation 해주어야 합니다. implementation 'androidx.recyclerview:recyclerview:1...
선분이 이전 모양의 90도 회전한 모양이 덧붙는 형식입니다. 저는 그냥 그림을 보다가 이전세대 모양이 90도 회전하여 붙는 것이므로 이전 세대의 끝점에서 뒤로 가며 나오는 방향의 90도 회전한 방향의 좌표를 추가해주는 식의 재귀함수로 세대를 구한다음 체크하였습니다. 사각형의 개수는 각좌표의 4방향이 모두 1이면 체크 해주는 식으로 진행을 하면 됩니다. 다음은 코드입니다. #include using namespace std; int visited[110][110]; void check(vector dir, int cnt) { if(cnt == 0) { for(int i = 0; i < dir.size(); i++) { int x = dir[i].first; int y = dir[i].second; visi..
이 문제는 주어진 사다리 형태에서 가로 사다리를 최대 3개까지 추가해서(그 중에 최소) i번째 사다리가 i번째에 도달하는 형태를 만들 수 있는지 찾는 문제입니다. 따라서 각 경우 i번째에 도달하는지 검사를 하는 함수와 각각 0~3번 사다리를 추가하는 함수를 실행시켜 되는 경우가 있는지 확인해 주면 됩니다. 이때 연속되게 다리를 놓는것은 불가능하므로 현재 보는 구간과 이전 구간 이후 구간에 사다리가 없는지 모두 확인 한뒤 그렇다면 다리를 놓으면 됩니다. 즉 다리를 0~3개 까지 추가하는 함수를 실행시킨뒤 그함수가 다리를 추가시켰을때 i번째 사다리가 i번째에 도달 한다면 그 사다리를 추가시킨 횟수가 답이 됩니다. 다음은 코드입니다. #include using namespace std; int ladder[3..
요즘 코드포스 블루를 달기 위해서 저번달부터 열리는div2,div3를 거의 다 참가하였습니다. div2 2~3솔 div3 3~4솔 정도 했던걸로 기억합니다,, 어제 4월21일 진행된 div3 에서 a,b,c는 아주 빠르게 풀고 d번에서 풀이는 떠올랐지만 결국 맞추지 못해서 아쉬운 마음을 안고 잠들었는데 생각지도 못하게 완전 턱걸이로 ㅋㅋ.. 블루에 들어오게 되었습니다. 이색깔이 뭐라고 기분이 좋네요! 아마 다음 div2하면 다시 떨어질거 같긴 하지만 그래도 기념으로 글을 적었습니다!
브루트 포스 문제입니다. 5가지 종류의 cctv가 있고 이 cctv는 벽이 없다면 해당방향을 감시 할 수 있게 됩니다. 각 주어진 cctv는 회전하여 설치가 가능할 때 사각지대의 최대 영역을 구하는 문제입니다. 따라서 각 cctv가 탐지 할 수 있는 부분을 90도씩 회전해서 감시해보고 각 상태에서 사각지대 영역을 구해서 답을 구하면 됩니다. 다음은 코드입니다. #include #include using namespace std; int cctv[10][10]; int N,M; vector pos; int c1[4] = {1,0,0,0}; //상좌하우 int c2[4] = {1,0,1,0}; int c3[4] = {1,1,0,0}; int c4[4] = {1,1,1,0}; int c5[4] = {1,1,1..