코딩셰프 강의를 듣고 정리한 내용 State란 UI에 변화가 생기도록 영향을 미치는 데이터 앱수준의 데이터 : 서버와 연동해서 사용자 인증 or 서버에 저장된 정보를 가져와 화면에 보여주는등 앱 화면에 변화를 일으키는 모든 데이터 위젯수준의 데이터 : 빈 체크박스에 사용자가 체크하면 체크표시가 생기게되고 이 상태를 위젯차원에서 해결해서 화면에 변화가 생기게끔 해주는것 setState 위젯라이프사이클의 빌드 메서드를 호출해서 UI를 렌더링 하게 해준다. → 플러터에 기본적으로 내장된 State Management 방법중 하나 단점 비효율성 : 가령 플러스, 마이너스 라는 두가지 버튼 위젯이 존재하고 플러스 버튼을 누르면 플러스 포인트를 + 1, 마이너스 버튼을 누르면 마이너스 포인트를 -1 해주는 앱이 있..
기본 Widget 이론 Widget은 모두 “불변”의 법칙을 가진다 만약 위젯을 변경하는 경우 기존 위젯 값을 바꾸는 것이 아닌 완전히 새로운 위젯을 생성하여 대체한다 StatelessWidget Life Cycle Constructor로 생성이 되고 그 즉시 build 함수가 실행 된다. 위의 Widget 이론의 불변 법칙을 준수한다. 하나의 StatelessWidget은 라이프 사이클 동안 단 한번만 build를 수행. StatefulWidget Life Cycle 기본라이프사이클 파라미터 바뀌었을때 라이프 사이클 state는 이미 생성되어 있는상태에서 파라미터가 바뀐경우 didUpdateWidget 실행 기존 위젯을 삭제하되, 기존의 State를 계승한다 (createState 실행 X) setSt..
https://github.com/qoridhc/Flutter_Project GitHub - qoridhc/Flutter_Project Contribute to qoridhc/Flutter_Project development by creating an account on GitHub. github.com 플러그인 설치 Firebase_Core : https://pub.dev/packages/firebase_core/install Cloud_firestore : https://pub.dev/packages/cloud_firestore Carousel_slider : https://pub.dev/packages/carousel_slider 하단 네비게이션바 만들기 import 'package:flutter/..
1.문제 2.풀이 빈칸(0)에만 숫자를 넣고 유효성 검사를 해야하므로 빈칸의 인덱스를 배열에 기록해둔다 이를 위해 좌표쌍을 가진 point라는 int형 pair를 선언, points라는 배열에 넣어준다. cnt변수에 0의 갯수를 기록해둔뒤, 재귀함수를 돌때마다 size변수의 크기를 0부터 증가시켜 cnt == size가 될때 즉, 모든 스도쿠 판이 채워질경우 종료한다. 1부터 9까지 for문을 돌며 빈칸에 넣어 check를 통해 유효성 검사를 한다. 만약 유효성 검사를 통과하지 못했다면 계속해서 for문을 돌게되고 만약 9까지 돌았음에도 통과하지못했다면 해당 케이스에서 알맞는 숫자가 없는것이므로 백트래킹을 할수 있도록 해당 좌표의 값을 0으로 돌려준다. 그래야 실패지점을 만날경우 다시 뒤로 가면서 새로운..
1.문제 2.풀이 처음 문제를 풀때는 N * N만큼의 체스판을 2차원 배열로 선언하고 반복문을 돌면서 각각의 가로 세로 대각선을 검사하는 코드를 짜려고 했으나 대각선 코드를 짜는게 힘들기도 했고 메모리 문제로 좀 더 효율적인 접근을 하는 방법을 모색해야 했다. 그래서 검색을 한 결과 2차원 배열이 아닌 1차원 배열로 체스판을 구현하고 문제를 푸는 방법을 알게되어 이를 활용해 문제를 풀었다. 풀이 흐름도 1. n개의 1차원 배열을 선언한다. 2. 0번째 배열부터 시작하므로 nqueen에 0을 넣어 함수를 실행시킨다 3. 만약 nqueen의 매개변수 x가 N과 같아지는 경우 모든 체스를 나열한 경우이므로 total++해준다. 4. 0~N-1까지 for문을 돌면서 퀸을 두고 겹치는게 있는지 check를 통해 ..
1.문제 2.풀이 우리가 흔히 하는 유클리드 기하학에서 원이라 함은 한점에서부터 다른한점까지의 거리가 모두 일정한 선들의 집합을 뜻한다. 여기서 한점과 다른 한 점 사이의 거리는 다음과같다. 즉 첫번째 사진의 초록색 선을 유클리드기하학에서 구한 두점사이의 거리이다. 택시기하학의 경우 이동한 거리를 두 점 사이의 거리로 정의한다(빨간색 선). 그래서 택시 기하학에서의 거리는 다음과 같이 정의 할 수 있다. 그래서 만약 택시 기하학에서 반지름이 2인 원을 그리고자 하면 이동거리가 2가되는 모든 점들을 찍어보면 된다. 그래서 택시기하학의 원은 마름모 형태가 나온다. 원의 넓이와 마름모의 넓이를 구하면 답을 구할 수 있다. 이때 float을 사용하면 정확도가 낮아 틀렸지만 같은 코드를 double로 바꿔서 제출..
힙이란? 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. 힙의 종류 최대 힙(max heap) 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 key(부모 노드) >= key(자식 노드) 최소힙(min heap) 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 key(부모 노드)
개요 Floyd Warshall 알고리즘은 Dijkstra 알고리즘과 마찬가지로 그래프에서 정점간의 최단경로를 찾기 위한 대표적인 최단경로 알고리즘중 하나이다. 비슷한 알고리즘이지만 Dijkstra는 한 특정 지점에서 다른 모든 지점까지의 최단경로를 구하는 Single-source shortest path algorithm이고, Floyd Warshall의 경우 모든 지점에 대해 그 점을 제외한 다른 지점들 까지의 모든 최단경로를 구하는 All-pairs shortest path algorithm이라는 차이점이 있다. 이번 글에서는 모든 쌍에 대해 최단 경로를 구하는 Floyd Warshall알고리즘에 대해 알아보고자 한다. 아이디어 위 사진처럼 i, j, 1 이라는 3개의 노드가 연결된 그래프가 있다고..