분류 전체보기
-
백준 1202번 보석 도둑알고리즘 2023. 8. 3. 09:38
N개의 보석의 무게 Mi 와 가격 Vi 가 주어지고, K개의 가방이 담을 수 있는 최대 무게 Ci가 주어졌을 때, 가방에 담을 수 있는 보석의 최대 가격을 구하는 문제입니다. (가방 한 개에는 최대 한 개의 보석만 담을 수 있습니다.) 시도 1. 가장 큰 가격의 보석을 넣을 수 있는 가장 작은 크기의 가방을 선택하여 넣어주도록 했습니다. 우선 가방을 오름차순으로, 보석은 가격순으로 내림차순으로 정렬했습니다. 현재 보석의 무게보다 같거나 큰 가방 중 가장 작은 가방을 선택하도록 했습니다. 이를 위해 이분탐색을 선택해 대입했습니다. def search(num): s,e=0,len(bags)-1 m=(s+e)//2 while snum: e=m-1 else: s=m+1 m=(s+e)//2 while m
-
Google Codelabs Flutter 앱 만들기 실습 1Flutter 2023. 8. 2. 22:23
현재 플러터를 활용한 크로스 플랫폼 앱을 만들기 위해 플러터 앱 만드는 방법에 대해 많이 알아보고 있는 와중, 구글에서 제공해주는 코드랩스에 대해 알게 되었습니다. 코드랩스는 여러가지 실습 자료들을 상세히 알려주는 플랫폼입니다. 여기서 플러터 앱 만들기 튜토리얼을 따라해보면서 플러터 앱 만들 때 필요한 것들을 한 번 알아보도록 하겠습니다. 1. 프로젝트 소개 구글 코드랩스에서 소개하는 이번 프로젝트는 두 개의 영어 단어를 합쳐 새로운 영어 단어를 만들어주어 표시해주기도 하고, 이 단어들 중 마음에 드는 단어들을 저장하고 저장된 단어들을 따로 보여주는 간단한 프로젝트를 만드는 프로젝트입니다. 2. Flutter 환경 설정 코드랩스에서는 VSCode를 활용하여 플러터앱을 만듭니다. 저와 같은 경우 이미 안드..
-
백준 11437번 LCA , 11438번 LCA2알고리즘 2023. 8. 2. 12:21
LCA란 Lowest Common Ancestor로 두 정점의 가장 가까운 공통 조상을 찾는 문제입니다 시도 1. 루트 노드인 1번 노드부터 연결된 간선을 통해 자식 노드들을 내려가게 됩니다. 이 때, 자식노드의 부모노드를 모두 저장하면서 내려가도록 합니다. 여기서 중요한 것은 주어지는 입력이 루트노드로부터 가까운 순이 아니므로, 모든 간선의 입력을 받은 뒤 부모노드와 자식 노드를 분간해야 된다는 것입니다. 모든 노드의 부모노드를 찾은 뒤, 두 정점으로부터 가까운 공통 부모를 찾아줍니다. 한 노드로부터 부모노드로 계속 이동하여 루트 노드까지 방문하고 방문한 노드에 표시를 해줍니다(visited 배열을 통해). 그 다음 다른 노드 또한 부모노드로 계속 이동하여 루트 노드까지 이동하는데 visited 배열에..
-
Dart 문법 정리Flutter 2023. 7. 28. 15:40
1. 변수 선언 // 정수 int variable1 = 10; // 소수 double variable2 = 2.5; // 참/거짓 bool variable3 = true, false; // 문자열 String varibale4 = "문자열"; // 타입 자동 유추 var variable5 = "var"; dynamic variable6 = "dynamic"; dynamic과 var의 차이 var은 선언 시 지정한 타입으로 고정되어 다른 타입을 할당 할 수 없습니다. dynamic은 선언 시 지정한 타입과 다른 타입으로 할당 할 수 있습니다. dynamic variable1 = "dynamic"; var variable2 = "var"; variable1 = 10 variable2 = 10 // 오류 nu..
-
백준 2048 (Easy) (Gold 2)알고리즘 2023. 7. 27. 10:18
2048 게임을 어느 방향이든 5번 실행했을 경우 가장 큰 숫자를 출력하는 문제입니다. 문제를 읽고 이번 문제는 2048게임 구현 + 모든 경우의 수를 살펴 봐야겠다는 생각을 했습니다. 우선 구현부분에 대해 생각해봤습니다. 2048게임 동작 원리 한 가지 방향에 대해 밀기를 할 때 동작하는 원리에 대해 우선 파악했습니다. 밀었을 때 일어나는 현상은 간단하게 두 가지 였습니다. 두 블럭이 같은 숫자라면 합쳐진다. 두 블럭이 다른 숫자라면 나란히 놓여진다. 여기서, 몇 가지 조건이 추가되는데 이는 빈 공백이 있을 경우입니다. 이 게임은 모든 칸에 숫자가 적혀있는 것이 아니라 공백이 있을 수도 있기 때문에 공백이 있을 경우도 생각하며 구현을 해야합니다. 구현 숫자를 가져오고 합칠 수 있는 방법에 대해 많이 고..
-
Flutter 기본 위젯, 레이아웃 설정 방법Flutter 2023. 7. 26. 20:27
오늘은 Flutter 프로젝트를 새로 만들 때 생성되는 기본 구조와 기본 위젯, 레이아웃 잡는 법에 대해 살펴보도록 하겠습니다. 프로젝트 구조 android, ios, web 디렉토리 : android, ios, web에 필요한 기능들이 들어 있습니다. lib : 플러터 다트 소스 파일들을 담는 디렉토리입니다. 프로젝트 시작하면 main.dart파일이 생성되어 있습니다. test : 테스트 소스 코드를 위한 디렉토리입니다. pubspec.yaml : 앱 이름, 의존성, 환경 변수, 이미지 경로 등 기본 정보들을 담고 있는 파일입니다. main.dart & main, runApp main.dart 파일은 플러터 앱의 시작점이 되는 파일입니다. 어플리케이션 구동 시 맨 처음 호출됩니다. void main..
-
백준 1167번 트리의 지름 (Gold 2)알고리즘 2023. 7. 26. 14:59
트리에서 임의의 두 점 사이의 거리가 가장 긴 경우를 지름이라고 할 때, 이 지름을 구하는 문제입니다. 시도 1. 첫 노드부터 마지막 노드까지 순회를 하면서 가장 거리가 먼 노드를 구하고 해당 길이 중 최대 길이를 출력하도록 했습니다. 각 노드로부터의 거리를 저장하기 위한 변수 dp와 각 순회마다 노드의 방문 여부를 확인하는 visited배열도 선언해주었습니다. dp 배열과 visited 배열은 2차 배열로 선언했습니다. dp[i][j]일 경우 i 노드에서 j 노드로 가는 가장 긴 경로를 저장하고 visited[i][j]일 경우 i 노드에서 하나의 간선으로 j를 갈 수 있을 경우 i->j 로 갔었는지 여부를 저장하도록 해주었습니다. 이 후 priorityqueue를 이용해 현재까지 이동 거리가 긴 경우부..
-
Flutter 설치 (Mac M1 Pro)Flutter 2023. 7. 25. 22:52
크로스 플랫폼 앱을 만들어보기 위해 플러터를 사용해보기로 했습니다. 리액트 네이티브와 플러터 중 어떤 것을 사용할 지 고민을 많이 했는데, 그래도 안 써본 프레임워크를 사용해보는 것이 더 좋을 것 같다는 생각이 들어 플러터를 공부해보도록 하겠습니다. 1. 플러터 설치 플러터 공식 사이트에 접속하여 자신의 OS 버전에 맞는 플러터를 설치하면 됩니다. zip 파일의 설치가 끝나면 압축을 해제해주고 압축 해제된 폴더를 원하는 위치에 두시면 됩니다. 2. 환경 변수 추가 터미널에서 아래의 명령어를 통해 환경변수 입력창을 띄워줍니다. # ~/.zshenv 없다면 아래 명령어 선행 touch ~/.zshenv # ~/.zshenv이 생성 됐다면 아래 명령어 실행 open ~/.zshenv 환경 변수 입력 창이 띄어..