분류 전체보기
-
백준 23290번 마법사 상어와 복제 (Python)알고리즘 2023. 8. 11. 14:13
물고기가 돌아다니고 있는 4*4 크기의 격자에 마법사 상어가 돌아다니며 마법 연습을 할 경우 마지막에 격자에 남아있는 물고기의 숫자를 구하는 문제입니다. 마법 연습의 순서는 다음과 같습니다. 1. 상어가 모든 물고기에게 복제 마법을 시전합니다. 복제 마법은 시간이 오래걸리기 때문에 5번째 순서에서 물고기 복제가 완료됩니다. 2. 모든 물고기에게는 처음에 주어진 방향이 있습니다. 이 방향대로 움직이는데, 해당 방향으로 움직일 수 없을 경우 반시계 방향으로 45도 회전한 다음 다시 이동을 시도합니다. 만약, 이동할 수 있는 칸이 없다면 이동하지 않습니다. 물고기가 이동할 수 없는 칸은 다음과 같습니다. 상어가 있는 칸 물고기의 냄새가 있는 칸 격자의 범위를 넘어가는 칸 3. 상어는 무조건 연속해서 3칸 움직..
-
Flutter + Spring Boot 가족, 모임 서비스 구현하기 1 (Feat. 카카오 로그인)Flutter 2023. 8. 11. 00:21
현재 개발하고자 하는 서비스에서 로그인한 유저가 새로운 가족이나 모임을 만들거나 기존의 가족이나 모임에 참여할 수 있도록 하는 기능을 만들게 되었습니다. 로그인과 같은 경우 Flutter 3.0 버전에 카카오 SDK가 정식으로 지원을 해준다고 해서 카카오 Flutter SDK를 활용했습니다. 새로운 모임,가족을 만드는 로직과 DB 접근을 위해 Spring Boot로 서버를 구축했습니다. 카카오 로그인 구현 카카오 로그인은 kakao developers 페이지에 자세한 설명이 있습니다. 이를 따라한다면 충분히 구현이 가능할 것 같습니다. https://developers.kakao.com/docs/latest/ko/getting-started/sdk-flutter Kakao Developers 카카오 AP..
-
백준 9328번 열쇠알고리즘 2023. 8. 10. 15:41
빈칸, 벽, 문서, 열쇠, 문이 있는 평면도가 주어졌을 때, 최대로 가질 수 있는 문서의 개수를 구하는 문제입니다. 문과 같은 경우 초반에는 모두 잠겨있으므로 열쇠를 먼저 얻어야지만 문을 통과할 수 있습니다. 초반에 열쇠가 주어질 수도, 안 주어질 수도 있습니다. 처음 들어갈 수 있는 위치는 평면도의 가장자리입니다. 사용 변수들 X # 행 크기 Y # 열 크기 maps # 문제에서 주어진 평면도. 크기 : maps[X][Y] keys # 열쇠를 저장할 집합 door # 평면도 탐색 중 열지 못한 문의 좌표 저장 visited # 평면도 방문 여부 저장. 크기 : visited[X][Y] 시작 위치 선정 들어갈 수 있는 부분은 평면도의 가장자리입니다. 그렇기 때문에 반복문을 통해 시작점의 위치를 찾을 수 ..
-
백준 2042번 구간 합 구하기알고리즘 2023. 8. 9. 09:19
N개의 수가 주어지고 연속된 어떤 부분의 합을 구하는 문제입니다. 중간에 i번째 수를 X로 바꾸어주기도 합니다. 이번 문제의 풀이에 앞서 이번 문제의 알고리즘 분류인 세그먼트 트리에 대해 알아보았습니다. 세그먼트 트리 세그먼트 트리는 여러 개의 연속된 데이터가 존재 할 경우 연속된 어떤 부분의 데이터 합을 구하는 방법에 관한 알고리즘입니다. N개의 변 할 수 있는 데이터에서 연속된 수 M개의 합을 여러번 구하는 방법은 무조건 M번의 반복을 통해서 구할 수 있습니다. N과 M이 엄청 큰 수라면 오랜 시간이 걸리게 될 것입니다. 세그먼트 트리는 트리의 서브트리에 포함된 연속된 범위의 데이터들의 합을 각 서브트리의 루트 노드에 저장 할 수 있도록 해줌으로써 좀 더 빠르게 특정 범위의 데이터의 합을 구 할 수 ..
-
백준 1069번 집으로알고리즘 2023. 8. 8. 12:18
X,Y에서 0,0으로 갈 수 있는 가장 빠른 시간을 구하는 문제입니다. 이동하는 방법은 두 가지로 걷거나 점프 할 수 있습니다. 걷기는 1초에 1만큼씩 움직이는 것입니다. 점프는 T초에 D만큼 움직일 수 있고 일직선으로만 할 수 있고 정확하게 D칸만 움직일 수 있습니다. 시도 1. 초반에는 입력에 대한 출력을 이해하는 것도 잘 되지 않았습니다. 예제 입력 1 # 입력 6 8 5 3 # 출력 6.0 6,8에서 0,0까지의 거리가 10이므로 두 번의 점프로 이동하면 0,0에 도착 할 수 있습니다. 예제 입력 1, 2, 3은 어느정도 생각하면 바로 떠올랐지만 예제 입력 4나 6은 바로 생각이 떠오르지 않아 힘들었습니다... 예제 입력 4 # 입력 400 300 150 10 # 출력 7.0 400,300에서 0..
-
백준 2470번 두 용액알고리즘 2023. 8. 7. 16:52
많은 종류의 산성 용액과 알칼리성 용액이 있을 때, 어떠한 두 용액을 섞었을 경우 두 용액의 특성값의 합이 0에 가장 가까운 용액을 구하는 문제입니다. (산성 용액의 특성값은 1~1,000,000,000까지의 양의 정수이고, 알칼리성 용액의 특성값은 -1 ~ -1,000,000,000까지의 음의 정수입니다.) 시도 1. 용액의 오름차순으로 정렬하고, 특성값의 합이 0에 가장 가까운 두 용액을 찾기 위한 방법을 고민했습니다. 입력 설명에 모든 용액이 산성 용액 혹은 알칼리성 용액으로만 주어지는 경우가 있다고 하여, 0에 가장 가까운 숫자를 찾는 것에 집중했습니다. 아래는 제가 생각한 예시였습니다. -101 -90 -5 10 12 110 위와 같이 용액이 주어졌을 경우 제 생각에는 0에 가까울수록 다른 특성..
-
백준 1937번 욕심쟁이 판다, 2437번 저울 (python)알고리즘 2023. 8. 4. 13:44
욕심쟁이 판다 (1937번) n * n 크기의 대나무 숲에서 판다가 움직이며 대나무를 먹을 때, 이동하는 칸의 대나무가 이전 칸의 대나무보다 많아야지만 이동 할 수 있을 때 판다가 이동 할 수 있는 칸의 수의 최대값을 출력합니다. 판다가 처음 이동을 시작하는 칸도 주어지지 않았기 때문에 모든 칸을 시작점으로 생각하여 이동을 해봐야 된다고 생각했습니다. 하지만, 모든 칸에서 이동 할 수 있는 칸의 수를 세는 것은 시간이 오래 걸릴 것으로 예상했습니다. 그래서, 각 칸마다 해당 칸에서 이동 할 수 있는 최대 칸의 개수를 저장해서 이전에 방문했던 칸이라면 다시 순회하지 않도록 했습니다. dp 문제는 이전의 어떤 로직에 의해 발견된 값과 현재 다시 이 칸을 방문했을 때의 값을 비교해서 다른 값을 채워넣는 식의 ..
-
Google Codelabs Flutter 앱 만들기 실습 2Flutter 2023. 8. 3. 12:16
코드랩스 플러터앱 만들기 실습을 이어가보도록 하겠습니다. 6. 좋아요 버튼 추가 현재 앱 상태는 단어 쌍이 다음 것으로 교체되면 없어지는 형태입니다. 한 번 지나간 단어도 다시 볼 수 있도록 하기 위해 favorite 버튼을 제작해보도록 하겠습니다. 리스트 선언 상태값에 favorites 리스트를 선언해줍니다. 또한, favorites 리스트에 단어를 넣거나 빼줄 수 있는 로직을 추가해줍니다. class MyAppState extends ChangeNotifier { ... var favorites = []; void toggleFavorites(){ if(favorites.contains(pairWords)){ favorites.remove(pairWords); } else { favorites.add..