전체글397 [Android] AlertDialog를 이용한 알림 창 띄우기 AlertDialog(알림 창) 스마트폰을 사용하다 보면 여러 상황에서 다음과 같은 알림 창을 마주할 때가 있다. 이러한 알림창을 AlertDialog라고 한다. AlertDialog는 보통 사용자에게 어떠한 내용을 알려주고 어떠한 선택을 할 수 있게 하는 목적을 가지고 사용한다. 위의 사진을 보면 알 수 있듯이, AlertDialog는 크게 3가지 영역인 "제목", "내용", "버튼" 영역으로 나뉜다. 첫 번째 사진을 보면 내용과 버튼 영역만이 있는 것을 볼 수 있다. 제목 영역은 선택사항으로, 알림을 간단한 메시지 또는 질문을 나타내는 경우 생략하여도 된다. AlertDialog 생성 및 사용 AlertDialog를 생성하기 위해서는 AlertDialog.Builder를 사용한다. val alertD.. Android 2022. 8. 17. [Android] 화면 회전할 때 데이터 처리 Activity LifeCycle을 보면 Activity를 가로 세로 회전시킬 때 onDestroy() 호출되고, 다시 onCreate()가 생성된다. 즉, 종료됐다가 새로 생성되는 것이다. 이때 기존 Activity가 가지고 있던 데이터들은 당연히 사라지게 된다. 예를 들어 버튼을 클릭할 때마다 count 변수가 증가한다고 하자. 아무 처리없이 count를 어느 정도 증가를 시킨 후, 화면을 회전시키면 count는 0이 된다. 이를 화면에 뛰운다면 7이었던 count가 회전을 시켰더니 0이 화면에 보이게 된다는 것이다. 이를 해결하기 위한 방법은 2가지가 있다. Manifest 수정 onSaveInstanceState()와 onRestoreInstanceState() 사용 이 두가지 방법에 대해 알아보.. Android 2022. 8. 17. [백준/BOJ] 12893번: 적의 적 문제 https://www.acmicpc.net/problem/12893 12893번: 적의 적 첫 줄에 용재 주위 사람의 수 N(1 ≤ N ≤ 2,000)과 적대관계의 수 M(0 ≤ M ≤ 1,000,000)이 주어진다. 두 번째 줄부터 M개의 줄에 거쳐 서로 적대관계에 있는 사람의 번호 A, B(1 ≤ A, B ≤ N)가 주어진다. www.acmicpc.net 해설 A와 B가 적대 관계고 B와 C가 적대 관계라면, A와 C는 우호 관계가 된다. 이 때, C와 D가 적대 관계라면, A와 C가 우호 관계이고, B와 D가 우호 관계가 된다. 결론은 두개의 팀으로 나눈다는 것이다. 즉, 이분 그래프가 성립이 되는지 안되는지를 구하는 것이다. 이분 그래프의 설명은 이 글을 참고하면 좋다. 코드 import j.. PS(Problem Solving)/BOJ 2022. 8. 17. [백준/BOJ] 1707번: 이분 그래프 문제 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 해설 처음 문제를 풀 때, 이분 그래프를 트리처럼 사이클이 없는 그래프라고 생각하였어서 계속해서 틀렸습니다가 떴다. 백준의 질문 검색을 통해 질문을 하였고, 금방 댓글이 달려 이분 그래프가 나의 생각과는 완전히 다르다는 것을 알고 이분 그래프에 대해 공부를 한 후 문제를 풀어보았다. 이분 그래프에 대한 설명은 이 글을 읽어보면 도움이 될 것이다. 이 문제에서 주의할 점은 특정 정점에서만 이분.. PS(Problem Solving)/BOJ 2022. 8. 16. [알고리즘] 이분 그래프(Bipartite Graph) 이분 그래프란? 정점을 두 그룹으로 나눌 수 있으면서, 같은 그룹끼리는 간선으로 이어지지 않은 그래프이다. 트리가 아닌 그래프이므로, 사이클이 있어도 상관없으나, 같은 색상의 정점끼리 연결은 있어서는 안된다. 간선이 단 한도 없고 정점만 있는 상태도 이분 그래프이다. 여기에서 알 수 있듯이, 모든 정점이 꼭 연결되있어야 하는 것이 아니다. 이분 그래프 구현 이분 그래프는 DFS 또는 BFS를 사용하여 구현할 수 있다. 나는 BFS가 더 익숙하여 BFS를 사용할 것이다. 백준의 1707번 이분 그래프 문제를 예시로 들어보자. import java.util.* import kotlin.collections.ArrayList private lateinit var color: IntArray private la.. Algorithm 2022. 8. 16. [Android] Fragment와 Fragment 생명 주기 Fragment란? Fragment = Activity + View라고 볼 수 있다. 즉, Activity의 개념과 View의 개념이 합쳐진 것이다. Activity와 View의 개념을 떠올려보자. View: 레이아웃, 위젯과 같이 액티비티 상에서 틀을 잡거나, 우리에게 보이는 버튼, 뷰 등등 Activity: View를 담을 수 있는 화면 그렇다면 Fragment는 무엇일까? Fragment는 Activity가 담을 수 있는 또 다른 화면이라고 생각하면 된다. 이제 다음과 같은 생각이 들 수 있다. "어? Activity와 Fragment가 둘 다 화면이라면 굳이 구분을 해야 할까? 그냥 Activity만 쓰면 안될까?" 이제부터 이 궁금증을 해결해보자. Activity는 Fragment에 비해 상당히.. Android 2022. 8. 15. [백준/BOJ] 2252번: 줄 세우기 문제 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 해설 문제의 답이 여러 개일 수 있는 스페셜 저지 문제이다. 처음에 어떻게 푸나 고민하다, 위상 정렬을 이용해서 풀었다는 글들을 많이 보았다. 위상 정렬이란 "선후 관계가 정의되 있는 그래프 구조 상에서 그에 따라 정렬하는 방법"이다. 문제의 예제1을 보면서 위상 정렬의 과정을 봐보자. 위상 정렬에는 큐를 사용하고, 또한 그래프 구조 상에서 정렬하는.. PS(Problem Solving)/BOJ 2022. 8. 15. [Android] Activity LifeCycle(액티비티 생명주기) Activity LifeCycle Activity는 안드로이드 컴포넌트 중의 하나로, 애플리케이션의 가장 기본이 되는 구성 요소이다. 일반적으로 하나의 애플리케이션에는 여러 개의 액티비티가 사용된다. 예를 하나 들어보자. 현재 유튜브에서 영상을 보고 있는데, 전화가 와서 받았다고 하자. 이때 유튜브 영상은 일시 정지된 상태로 기다렸다가 통화가 마친 후 다시 전화 창에서 유튜브로 액티비티 전환이 일어나면 다시 시작할 수 있도록 해준다. 즉, 액티비티의 CallBack은 상태 변화에 적합한 특정 작업을 실행할 수 있게 해줌으로써, 상황에 맞는 적절환 전환을 처리하면 앱을 더 안정적으로 사용할 수 있다. 위의 과정을 차례대로 봐보자. 위에서도 예시로 들었던 유튜브, 전화로 또 한번 상황을 만들어보겠다. 사용자.. Android 2022. 8. 14. [백준/BOJ] 16234번: 인구 이동 문제 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 해설 문제를 세분화해보자. 인구 이동이 더 이상 일어나지 않을 때까지 반복. 즉, 우선 무한 반복을 돌린다. 모든 나라를 bfs를 이용해서 연합이 가능한지 탐색한다.(dfs를 사용해도 된다.) 인접 국가와의 인구 차이가 l 이상 r 이하인 경우 연합을 맺는다. 연합 국가의 총 인원수를 갱신해준다. 연합 국가의 위치 정보를 저장해준다.(나는 전역으로 list를 선언해주었다.) 방.. PS(Problem Solving)/BOJ 2022. 8. 14. [Android] Toast Message(토스트 메세지) Toast란? 스마트폰을 사용하다 보면 종종 하단에 작은 메시지 박스가 뜨는 것을 볼 수 있다. 위처럼 모바일 네트워크에 연결이 될 때, 문자를 보낼 때 혹은 로그인에 실패했을 때 등등 작은 팝업으로 작업에 관한 내용을 제공해준다. 이러한 기능을 Toast(토스트)라고 한다. Toast Message 띄우기 Toast를 사용할 때는 Toast.makeText().show()의 형식으로 사용한다. 이때 makeText() 메서드에는 3개의 파라미터가 담겨있다. context: 사용할 어플리케이션의 활동 개체를 뜻한다. 보통 applicationContext를 사용한다. text: 사용자에게 표시될 텍스트 duration: Toast Message를 길게 또는 짧게 띄우는 것을 결정한다. Toast.LENG.. Android 2022. 8. 14. [Android] Intent란?, Intent를 이용한 화면 전환하기 Intent란? [Android] 안드로이드 컴포넌트(구성 요소) 안드로이드 앱 개발의 핵심은 컴포넌트이다. 종종 "액티비티 컴포넌트", "서비스 컴포넌트" 등 컴포넌트라는 용어가 자주 등장한다. 그렇다면 컴포넌트란 무엇일까? 컴포넌트란? 컴포넌트는 안 jjunsu.tistory.com 위의 글에서 안드로이드는 컴포넌트로 구성되어 있고, 이 컴포넌트에는 4가지 유형이 있다는 것을 공부했다. 이 4가지 유형이 어떤 것들인지 다시 한번 되짚어 보면 다음과 같다. Activity(액티비티) Service(서비스) Broadcast Receiver(브로드캐스트 리시버) Content Provider(콘텐츠 제공자) 이를 왜 다시 되짚어 봤을까? 바로 Intent가 각각의 컴포넌트 간의 통신을 맡고 있기 때문이다.. Android 2022. 8. 13. [백준/BOJ] 2665번: 미로만들기 문제 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1 ≤ n ≤ 50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net 해설 흔하게 볼 수 있는 BFS 문제이다. 미로를 탐색하며 도착점에 도달하기 위해 바꿔야하는 검은 방이 몇개인지 알아야 한다. 서로 붙어 있는 두 개의 흰 방 사이에는 문이 있어 지나다닐 수 있으므로, 상하좌우로 이동이 가능하다. 보통 BFS라면 방문 여부를 체크하는 배열이 있기 마련이다. 이를 통해 이미 방문했던 지점이라면 재방문을 하지 않도록 해준다. 하지만 난 이 문제에서 재방문을 허용해주었다. 모든 경우 재방문을 하는 것이 아닌, 벽을 바꾼 횟수가 .. PS(Problem Solving)/BOJ 2022. 8. 13. 이전 1 ··· 8 9 10 11 12 13 14 ··· 34 다음 728x90