본문 바로가기

코틀린29

[안드로이드] 서비스 예제1 - start service Android Component 중 하나인 Service에 관한 예제이다. Service는 크게 바인딩이 되었는지 혹은 스타트 되었는지 나눌 수 있지만 양 쪽 방식으로 작동할 수도 있다. 이번 글은 바인딩이 아닌 startService() 메서드를 통해 시작되는 서비스에 관한 예제이다. 1. Service 생성 새 프로젝트를 만들어서 서비스를 생성한다. class RingtoneService : Service() { override fun onBind(intent: Intent): IBinder { TODO("Return the communication channel to the service.") } } Ringtone을 이용할 것이기 때문에 RingtoneService로 지었다. 2. 이번 예제에서는.. 2022. 5. 18.
백준 - 17822 원판 돌리기 (코틀린) [문제] https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net [풀이] 시뮬레이션과 구현 문제로 주어진 문제에 맞게 코드를 작성하면 된다. 처음 간단한 문제라고 생각했던 것에 비해 오래 시간이 끌린 부분이 있었는데 회전을 하는 부분에서 시간이 걸렸다. 한 칸 씩 움직일 때는 임시 변수 하나를 두어 인덱스가 0보다 작거나 배열 크기보다 클 때에 그에 맞게 회전이 가능했으나 두 칸 이상씩 움직일 땐 범위를 벗어난 수들을 따로 저장을 해야.. 2022. 4. 27.
백준 - 13459 구슬 탈출 (코틀린) [문제] https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net [풀이] bfs를 이용하여 푼다. 두 구슬이 같이 움직이니 큐에는 구슬 각각의 좌표를 같이 넣어주고, 움직인 횟수도 같이 넣어준다. 움직인 횟수가 10번이상이면 0을 반환한다. 큐에서 나온 각각의 좌표를 방향마다 벽이나 구멍을 만날때 까지 움직인 좌표를 구하고 각각의 좌표가 이미 방문했는지 안했는지 체크하고 방문하지 않았으면 큐에 넣어준다. .. 2022. 4. 19.
백준 - 21610 마법사 상어와 비바라기 (코틀린) [문제] https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net [풀이] 구현 문제이기 때문에 문제에 따라 적절하게 코드를 작성해야 한다. 만들어진 구름을 담는 연결리스트와 만들어진 구름의 위치를 저장하는 2차원 배열을 이용한다. 가장 처음의 구름의 위치를 연결리스트에 담는다. 이후에 입력 받은 이동 정보를 통해 구름을 이동하고, 비를 내리고, 물을 주고, 다시 구름을 만드는 작업을 반복해준다. 구름을 이동하는 작업은 이동 방향과 거리를 계산하.. 2022. 4. 14.
백준 - 2933 미네랄 (코틀린) [문제] https://www.acmicpc.net/problem/2933 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄 www.acmicpc.net [풀이] bfs와 구현, 시뮬레이션 문제이다. 막대를 던진 높이를 배열에 저장하고 해당 인덱스를 이용해서 왼쪽에서 던질지 오른쪽에서 던질지 정한다. 던지면서 'x'를 만난다면 지우고 '.'로 바꿔준다. 그리고 해당 좌표의 위,아래,좌,우 좌표가 'x' 라면 해당 좌표에서 시작하는 미네랄이 바닥과 연결되어 있는지 아닌지 구한다. 연결되어 있다면 이동을 시킬 필요가 없으니 넘어가고 연결되어 있지 않다면 해.. 2022. 4. 7.
백준 - 3187 양치기 꿍 (코틀린) [문제] https://www.acmicpc.net/problem/3187 3187번: 양치기 꿍 입력의 첫 번째 줄에는 각각 영역의 세로와 가로의 길이를 나타내는 두 개의 정수 R, C (3 ≤ R, C ≤ 250)가 주어진다. 다음 각 R줄에는 C개의 문자가 주어지며 이들은 위에서 설명한 기호들이다. www.acmicpc.net [풀이] bfs 문제. 좌표를 돌면서 울타리 안의 해당 좌표가 늑대와 양의 수를 구하고 양이 늑대보다 많은 경우에는 전체 양의 수를 늘려주고 그 이외의 경우(늑대가 더 많거나 수가 같거나)에는 전체 늑대의 수를 늘려준다. [코드] import java.util.* private var n = 0 private var m = 0 private lateinit var arr : .. 2022. 4. 7.