코루틴 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 비동기 vs 동기 예를 들면, 요리를 할 때 동생 같은 요리 초보는 프라이팬을 하나만 사용하면서 요리를 한다. 이러한 방식을 동기라고 한다. 나같은 요리 고수는 프라이팬을 여러 개 사용하면서, 칼질도 하는 등 여러 작업을 동시에 한다. 이러한 방식을 비동기라고 한다. 그렇다면 비동기가 왜 필요할까? 만약 내가 버튼을 누름과 동시에 데이터베이스에서 접근해서 데이터베이스를 읽어 들이는데, 그 데이터베이스를 기다리는 동안 화면 UI는 데이터베이스에서 정보가 들어오지 않았기에, 계속 기다려야 하고, 그렇게 되면 사용자 입장에서는 텅 빈 화면을 바라봐야 한다. 이러한 상황이 발생되면 사용자도 불편하고..
전체 글
안녕하세요 💻📕문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 그리고, 가장 빠른 시간으로 찾는 방법이 몇 가지 인지 구하는 프로그램을 작성하시오. 📗입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 📗출력 첫째 줄에 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다..
문제 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인지 알아보자. 물론 중간에 다른 도시를 경유해서 여행을 할 수도 있다. 예를 들어 도시가 5개 있고, A-B, B-C, A-D, B-D, E-A의 길이 있고, 동혁이의 여행 계획이 E C B C D 라면 E-A-B-C-B-C-B-D라는 여행경로를 통해 목적을 달성할 수 있다. 도시들의 개수와 도시들 간의 연결 여부가 주어져 있고, 동혁이의 여행 계획에 속한 도시들이 순서대로 주어졌을 때 가능한지 여부를 판별하는 프로그램을 작성하시오. 같은 도시를 여러 번 방문하는 것도 가능하다. 입력 첫 줄에 도시의 수 N이..
📕문제 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에는 불이 붙지 않는다. 상근이는 동서남북 인접한 칸으로 이동할 수 있으며, 1초가 걸린다. 상근이는 벽을 통과할 수 없고, 불이 옮겨진 칸 또는 이제 불이 붙으려는 칸으로 이동할 수 없다. 상근이가 있는 칸에 불이 옮겨옴과 동시에 다른 칸으로 이동할 수 있다. 빌딩의 지도가 주어졌을 때, 얼마나 빨리 빌딩을 탈출할 수 있는지 구하는 프로그램을 작성하시오. 📗입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스는 최대 100개이다. 각 테스트 케이스의 첫째 줄에는 빌딩 지도의 너비와 높이 w와 h가 주어..
문제 세준이는 크기가 N*M인 직사각형 도시에 살고 있다. 또, 세준이의 집은 (1, 1)에 있고, 학원은 (N, M)에 있고, 오락실이 C개 있다. 세준이의 현재 위치가 (r, c) 일 때, (r+1, c) 또는 (r, c+1)로만 이동할 수 있다. 오락실을 방문할 때는 규칙이 하나 있는데, 오락실 번호가 증가하는 순서대로 가야 한다는 것이다. 2번 오락실을 먼저 가고, 그 후에 1번 오락실을 가면 안 되고, 2번 오락실을 가려면, 그전에 아무 오락실도 가지 않거나, 1번 오락실을 방문했을 때만 가능하다. 세준이는 오락실을 K번 방문해서 학원에서 도착하는 경로의 경우의 수가 궁금해지기 시작했다. 오락실을 0개 방문했을 때부터, C개 방문했을 때 까지 경우의 수를 출력하는 프로그램을 작성하시오. 입력 첫..
📕문제 농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는 구두쇠라서 최소한의 소들을 만나면서 지나가고 싶습니다. 농부 현서에게는 지도가 있습니다. N (1 > a >> b >> c; graph[a].push_back(make_pair(b, c)); // a -> b 의 값은 c 라는 뜻 , 기본적으로 undirect graph라서. 모두 처리 graph[b].push_back(make_pair(a, c)); } pq.push(make_pair(1,0)); funct(1); cout cost+nextcost){ // 비용 업데이트 해주기. dist[next]=cost+ne..
안드로이드 개발을 시작하고 꽤 많은 코드에서 Context를 명시하라는 조건이 있었다. Context가 사전적 의미로 대충 문맥, 맥락 이런 뜻이기에 그냥 현재 Activity를 의미하는 줄 알았다. 하지만 자세히 파보니 Context가 단순 현재 Activity만을 의미하는 것이 아닌 것을 알게 되었고, 계속 공부를 할수록 Context를 명시해야 하는 코드가 많아지기에(ViewModel Observable 등등..), 개념을 정확히 이해할 필요성이 있어서 정리하려고 합니다.! 💡안드로이드에서의 Context Context란 단어 그대로 맥락을 의미하며, 현재의 상태를 나타낸다고 이해하면 편할 거 같습니다 Context에 대한 중요한 몇 가지 사실 들 애플리케이션의 현재 상태를 Context를 통해 표..
문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔎문제 해석 문제에서 목표는 2가지 있습니다. 이모티콘 플러스 서비스 가입자를 최대로 하는 것 이모티콘 판매액을 최대한 늘리는 것. 여기서 1번 목표를 최우선시로 하고, 그다음 목표가 2번입니다. 이모티콘의 할인률은 정해져 있습니다. 10%, 20% , 30%, 40% 각 이모티콘의 할인율을 조정해서, 우리는 최대한 많은 서비스 가입자를 모아야 합니다. 판매금액도 최대로 해야 하구요 ..
Live Data는 MVVM패턴의 구성요소인 ViewModel에서 많이 사용되는 데이터 형식입니다. Live Data는 Android Jetpack에 포함되어 있는 라이브러리입니다. 공식문서에는 설명이 어렵게 되어 있어서 제 주관적으로 해석한 글입니다. (제 주관이 싫다면 뒤로 가기를 살포시 눌러주셍) 우선 Live Data는 observable data holer class입니다. 쉽게 설명하면 망보는 사람입니다. 이걸 안드로이드에서 적용해 보면 데이터가 변경되는지 감시하고 있다가 UI 컨트롤러(Activity, Fragment)들에게 알려줍니다. 그러면 UI 컨트롤러는 변경사항을 가지고 UI를 업데이트합니다. 감시자가 나는 원하지도 않는데, 계속 뭐뭐뭐 바뀌었다~ 이렇게 하면 듣는 사람들도 피곤하지 ..