[Android Studio] SQLite 데이터베이스 구축
·
프로젝트
시험 기간과 모바일 프로젝트 과제 일정이 겹쳐서, 단기간 내에 앱을 개발하기 위해  서버가 필요 없는 SQLite를 사용하기로 했다. SQLite는 파일 기반 데이터베이스로, 안드로이드 앱과 같은 환경에서 데이터베이스 서버를 구축하지 않고도 데이터 저장과 관리가 가능하다.🚩 SQLite 동작 방식안드로이드에서 SQLite는 SQLiteOpenHelper, SQLiteDatabase, Cursor와 같은 주요 클래스를 통해 동작한다.SQLite 관련 클래스 및 인터페이스와 메소드SQLiteOpenHelper 클래스앱 실행 시 필요한 데이터베이스를 생성하고 테이블을 정의하는 데 사용된다.주로 onCreate(), onUpgrade() 메서드를 통해 데이터베이스 초기화 및 버전 관리를 담당한다.메소드주요 용..
[Android Studio] 술안주 월드컵 제안서
·
프로젝트
2023년 11일 약 2주간 진행술안주 월드컵 GitHub 4학년 2학기 모바일 프로그래밍 전공 수업으로 안스 텀프로젝트를 구현해야 했다.재미있는 주제를 선정하고 싶었고 대학생들에게 빼놓을 수 없는 음주와 관련하여제공해줄 수 있는 서비스에 초점을 두었으며 술자리를 옮길 때 어디 술집을 갈지, 어떤 안주를 먹을지사소한 고민거리를 해결할 수 있는 술안주 월드컵 앱을 구현했다.거기에 우리학교 학생들을 위해 결승한 술안주를 판매하는학교 주변 술집 정보가 적힌 리스트도 추가적으로 제공할 예정이다.술안주 월드컵은 16강, 8강, 4강 이렇게 세 가지 라운드 중에 하나를 선택할 수 있다. 🎨 UI 디자인 🎯 월드컵 게임 로직 설계초기 설정술안주 목록을 데이터베이스에서 가져온다.사용자가 선택한 라운드 수에 맞게 랜..
[SWEA] 2382. 미생물 격리 (시뮬레이션/Java)
·
코딩 테스트/SWEA
[SWEA] 2382. 미생물 격리 📌 풀이 과정미생물 군집의 정보를 입력받아 저장해야 하는데미생물 수가 큰 순서대로 정렬하도록 PriorityQueue를 사용한다.우선순위 큐를 사용하면서 두 개 이상의 군집이 한 셀에 모이는 경우는 미생물 수를 합치는 로직만 구현해주면 된다. 1. 매 시간마다 이동 후의 군집 상태를 저장하기 위해 map 배열을 초기화 한다.2. 각 미생물 군집을 꺼내서 현재 방향에 맞게 이동한다.3. 이동 후 군집 상태를 다시 우선순위 큐에 넣는다.이동 후, 격자의 경계에 도달하면 미생물 수를 절반으로 줄이고 이동 방향을 반대로 바꿉니다.이동한 위치에 다른 군집이 존재하면 미생물 수를 합칩니다.4. 이동 후의 군집 상태를 다시 우선순위 큐에 넣는다.  ✨ 제출 코드import jav..
[백준] 16236. 아기상어 (그래프/Java)
·
코딩 테스트/Baekjoon
[백준] 16236. 아기상어비슷한 유형으로 [SWEA] 2382. 미생물 격리 문제를 추천! 📌 풀이 과정처음 아기 상어 위치에서 BFS를 수행해 아기상어의 크기보다 작은 물고기를 찾는다.1. 거리가 가장 가까운 물고기2. 거리가 같다면 가장 위쪽에 위치한 물고기3. 위쪽까지 같다면 가장 왼쪽에 위치한 물고기현재 먹을 수 있는 물고기에 대한 탐색이 끝나면 아기상어는 이러한 우선순위로 물고기를 선택해야 하는데우선순위에 따라 쉽게 선택하기 위해서 PriorityQueue를 사용한다. 다음으로, 물고기를 먹을 때마다 아기 상어의 물고기를 먹은 횟수를 증가시키고,크기 조건이 맞다면 아기상어의 크기를 증가시킨다. ✨ 제출 코드import java.io.BufferedReader;import java.io.IO..
[SWEA] 8275. 햄스터 (백트래킹/Java)
·
코딩 테스트/SWEA
[SWEA] 8275. 햄스터 📌 풀이 과정1. 각 우리에 0부터 X마리까지 가능한 햄스터 수를 배치하기 위해 중복 순열을 생성한다.2. (idx == N)이 되면 해당 순열이 경근이가 기록한 햄스터의 수에 모두 만족하는지 확인한다.3. 조건을 모두 만족하면 현재 배치된 총 햄스터 수를 계산해, 기존 최대 햄스터 수를 갱신한다.    조건을 하나라도 만족하지 못하는 경우 탐색을 종료하고, 다음 순열로 넘어간다. ✨ 제출 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public clas..
[SWEA] 1824. 혁진이의 프로그램 검증 (시뮬레이션/Java)
·
코딩 테스트/SWEA
[SWEA] 1824. 혁진이의 프로그램 검증📌 풀이 과정단순한 시뮬레이션 문제인줄 알았는데 무려 4차원 방문 배열이 필요한 문제였다.dfs 재귀로 계속 탐색하니 StackOverflow 가 떠서 골치가 아픈 문제다. 이동 방향에 따른 인덱스 관리하기문제에서는 이동 방향이 2차원 격자의 크기를 벗어날 경우 반대편에 있는 위치로 이동해야 한다.이때 모듈러 연산을 통해 인덱스 관리를 해야한다.우리가 일반적으로 사용하는 (index + 1) % size 방식은 음수 인덱스를 처리할 수 없으니index = (index - 1 + size) % size위 방식으로 음수 인덱스를 방지하여 순환할 수 있도록 한다. 4차원 방문배열이 왜 필요하지?이 문제의 목적은 혁진이는 자신이 작성한 프로그램이 결국에는 멈출 수 ..
[SWEA] 8382. 방향 전환 (BFS/Java)
·
코딩 테스트/SWEA
[SWEA] 8382. 방향 전환 📌 풀이 과정이 문제는 규칙을 찾아서 수식으로 쉽게 풀 수 있다. 하지만 그래프 탐색을 연습해야 하기에 BFS로 풀게되었다. (x1, y1 )에서 (x2, y2)로 이동을 하는데 가장 첫 이동은 어떤 이동이어도 상관 없다.이전 이동이 가로 이동이었다면, 이번에는 세로 이동으로 이동하고, 이전 이동이 세로 이동이었다면,이번에는 가로 이동으로 이동하여 (x1, y1)에서 (x2, y2)로 이동해야 한다.여기서 최소 몇 번의 이동을 해야 도착할 수 있는지 구현을 해야 한다.가로와 세로 방향으로 번갈아 이동해야 하는 조건으로 인해 방향에 따른 방문 체크가 필요하다.즉, 같은 위치라도 직전에 가로로 이동했는지, 세로로 이동했는지에 따라그 다음 이동이 달라지기 때문에 방향 정보를..
[SWEA] 10966. 물놀이를 가자 (BFS/Java)
·
코딩 테스트/SWEA
[SWEA] 10966. 물놀이를 가자 📌 문제 풀이각 땅(L)에서 가장 가까운 물(W)까지의 최소 거리를 구하고, 그 거리들의 합을 계산해야 한다.처음에 문제에서 적힌 것 처럼 땅에서 출발해서 물에 도착하는 경우 그 거리를 누적하게 했는데 시간 초과가 떴다. 문제에선 물(W)의 개수가 최소 1개 이상 주어진다고 했지만,예외적으로 최악의 상황을 생각해보자!! 만약 물(W)이 아예 없다면, 땅(L) 위치에서 각각 BFS를 수행해도 물에 도착할 수 없게된다.이 경우 모든 땅에 대해 개별적으로 BFS를 수행해야 하므로, 땅의 개수만큼 BFS가 실행되어연산량이 크게 증가하고 최단 거리 계산이 불가능해진다.따라서 물(W)의 위치에서 출발해, 동시에 BFS를 수행하면서 땅(L)을 탐색하는 방식으로생각의 전환이 필..
[백준] 2636, 2638 치즈 (그래프 탐색/Java)
·
코딩 테스트/Baekjoon
[백준] 2636 치즈2636. 치즈 - 골드4📌 풀이 과정 외부 공기 (0,0) 위치를 시작점으로 bfs 탐색을 시작한다.현재 탐색할 대상인 위치가 1. 공기인 경우(0)큐에 넣어 다음 탐색에서도 이 공기와 연결된 좌표를 계속해서 탐색해 나갈 수 있도록 한다. 2. 치즈인 경우(1)탐색 중 이 좌표가 치즈라면, 외부 공기와 접촉한 것이므로 녹여야 한다.치즈를 공기(0)로 바꾸어 녹인 뒤, 남은 치즈 개수를 감소 시킨다. cheese--여기서 중요 포인트!!!녹인 치즈는 큐에 넣지 않는다.큐에 넣게 되면 새로 녹은 공기가 내부 공기와 접촉할 위험이 있기 때문에안쪽에 있는 치즈가 의도치 않게 녹을 수 있다.  ✨ 제출 코드package beakjoon;import java.io.BufferedReader..
[SWEA] 2115 벌꿀채취 (조합, 부분집합/Java)
·
코딩 테스트/SWEA
[SWEA] 2115 벌꿀채취📌 풀이 과정두 명의 일꾼이 최대 수익을 얻을 수 있도록 꿀을 채취하는 구간을 선택해야 한다.각 일꾼이 채취할 수 있는 벌통의 수와 꿀의 최대 양이 정해져있기 때문에, 이 조건을 잘 생각해야 한다.각 구간에서 선택할 수 있는 벌통의 부분 집합 중에서 최대 수익을 미리 구해두면이후 두 일꾼이 벌통을 선택할 때 그 값을 재사용할 수 있기 때문에 최대 수익을 먼저 계산하도록 하자!!!아래 코드에서 profit 배열에 각 구간의 최대 수익을 미리 계산해두면두 일꾼이 벌통 구간을 선택할 때 해당 구간의 최대 수익만 참조하면 된다.1. 최대 수익 계산각 구간에서 얻을 수 있는 최대 수익을 계산해야 한다.일꾼이 꿀을 채취할 수 있는 모든 가능한 구간에 대해 최대 수익을 구한다.2. 두 ..