본문 바로가기
  • 안녕하세요,,, 안녕히가세요,,,,

프로그램34

Flutter] Stateless와 Stateful Widget 그리고 상태관리 Flutter 내에서 UI의 기본 단위는 Widget으로 이루어진다. 보이는 대부분의 것이 Widget이고 Widget에 Widget을 쌓거나 더해서 화면을 구성한다. state는 말 그대로 상태를 뜻하는데, 선언형 프로그래밍에서 많이 쓰이는 개념이다. 상태에 따라서 행위를 결정하고 보여준다. 하지만 이건 개념적인 내용이고... 실 사용시 고려해야 할점과는 초점이 다르다. Stateless Widget 은 말 그대로 상태가 불변하는 위젯이다. Stateful Widget은 말 그대로 상태가 변하는 위젯이다. 하지만 State와 관련되어 있기 때문에 상태관리를 도입한 이후부터는 개념이 조금 달라질 수 있다. Stateful Widget은 상태가 항상 변할 수 있기 때문에 디바이스의 리소스를 많이 잡아먹게 .. 2023. 10. 20.
Flutter 설치 방법과 Android Studio 설치법  ( Mac OS ) Flutter https://docs.flutter.dev/get-started/install/macos macOS install How to install on macOS. docs.flutter.dev Flutter 공식 홈페이지에서 flutter를 다운받을 수 있다. 귀찮다면 아래 방법을 따라하면 된다. terminal을 이용해 설치 한다 1. 루트에 development 라는 폴더를 만든다. cd ~ mkdir development cd development 2. git 을 통해 flutter를 설치해준다. git clone https://github.com/flutter/flutter.git -b stable 3. 환경변수를 설정해준다. vi ~/.zshrc export PATH="$PATH:$.. 2023. 10. 19.
2023.08.30 기준 시군구 코드 정리 11000 서울특별시 11110 서울특별시 종로구 11140 서울특별시 중구 11170 서울특별시 용산구 11200 서울특별시 성동구 11215 서울특별시 광진구 11230 서울특별시 동대문구 11260 서울특별시 중랑구 11290 서울특별시 성북구 11305 서울특별시 강북구 11320 서울특별시 도봉구 11350 서울특별시 노원구 11380 서울특별시 은평구 11410 서울특별시 서대문구 11440 서울특별시 마포구 11470 서울특별시 양천구 11500 서울특별시 강서구 11530 서울특별시 구로구 11545 서울특별시 금천구 11560 서울특별시 영등포구 11590 서울특별시 동작구 11620 서울특별시 관악구 11650 서울특별시 서초구 11680 서울특별시 강남구 11710 서울특별시 송파구 .. 2023. 8. 30.
RecyclerView를 간략하게 줄여보기 + paging3에 적용 abstract class BaseRecyclerViewAdapter(var items: List) : RecyclerView.Adapter(){ @LayoutRes abstract fun getLayoutResId(): Int var binding: Any? = null override fun onCreateViewHolder( parent: ViewGroup, viewType: Int ): BaseRecyclerViewAdapter.BaseViewHolder { return BaseViewHolder( LayoutInflater.from(parent.context).inflate( getLayoutResId(), parent, false ) ) } override fun getItemCount() =.. 2022. 7. 11.
안드로이드 Jetpack 군대 갔다왔더니 안드로이드가 대 격변을 했었다. 현재 안드로이드는 Jetpack 없이 개발하는게 오히려 비추천될 정도로 필수적인 라이브러리 모음집이다. 그렇다고 한다. 사용해보면 확실히 개발이 더 편해지고 호환도 잘 되고 성능도 좋고 일관적이고 여러모로 좋긴 하다. 특히 MVC 기반의 개발에서 Android MVVM(그냥 MVVM과는 조금 다르다)으로 개발해보면 차이를 크게 느낄 수 있다. 그것보다 중요한건 support 라이브러리를 모듈화 시켜서 가볍고 버전 호환이 잘되는 큰 장점이 있다. Room은 Sqlite를 완벽히 활용하면서 안정성까지 갖추었고 Android KTX는 코틀린 코드를 더 간결하게 만들어주며 Paging3는 기존의 페이징을 더 안정적으로 구현 가능하게 해준다. 그 외에도 많은 장점이.. 2022. 7. 9.
삼성 Expert 14178 1차원 정원 import math count = 0 for _ in range(int(input())): N, D = map(int, input().split()) count += 1 num = 1 + D * 2 print(f'#{count} {math.ceil(N/num)}')​ 2022. 6. 13.
삼성 Expert 1206 View for i in range(1, 11): ans = 0 case = input() ar = list(map(int, input().split())) for j in range(2, len(ar) - 2): if ar[j] > ar[j - 2] and ar[j] > ar[j - 1] and ar[j] > ar[j + 1] and ar[j] > ar[j + 2]: ans += ar[j] - max(ar[j - 1], ar[j - 2], ar[j + 1], ar[j + 2]) j += 2 print(f"#{i} {ans}") 2022. 6. 13.
삼성 Expert 1244 최대 상금 ans = 0 def dfs(count): global ans temp = int(''.join(ar)) if count == 0: ans = max(ans, temp) return for i in range(len(ar)): for j in range(i + 1, len(ar)): ar[i], ar[j] = ar[j], ar[i] temp_key = ''.join(ar) if chk.get((temp_key, count - 1), 1): chk[(temp_key, count - 1)] = 0 dfs(count - 1) ar[i], ar[j] = ar[j], ar[i] for test_case in range(1, int(input()) + 1): ans = 0 ar, n = input().split().. 2022. 6. 13.
삼성 Expert 1208 Flatten https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com for test_case in range(1, 11): ans = 0 dump = int(input()) ar = list(map(int, input().split())) for i in range(dump): max_num = max(ar) min_num = min(ar) if max_num == min_num: break ar[ar.index(max_num)] -= 1 ar[ar.index(min_num)] += 1 ans = max(ar) - mi.. 2022. 6. 13.
백준 7562 나이트의 이동 from collections import deque dy = (1, 1, -1, -1, 2, 2, -2, -2) dx = (2, -2, 2, -2, 1, -1, 1, -1) N = 0 def err(ex, ey): return 0 2022. 6. 13.
백준 1743 음식물 피하기 import sys sys.setrecursionlimit(10 ** 8) dy = (0, 1, 0, -1) dx = (1, 0, -1, 0) N, M, K = map(int, input().split()) trash_map = [[False for _ in range(M)] for _ in range(N)] check_map = [[False for _ in range(M)] for _ in range(N)] answer = 0 size = 0 for _ in range(K): r, c = map(int, input().split()) trash_map[r - 1][c - 1] = True def err(ey, ex): return 0 2022. 6. 13.
백준 1987 알파벳 from collections import deque dy = (0, 1, 0, -1) dx = (1, 0, -1, 0) R, C = map(int, input().split()) move_board = [input() for _ in range(R)] check = [[set() for _ in range(C)] for _ in range(R)] ans = 0 deq = deque() deq.append((0, 0, move_board[0][0])) check[0][0].add(move_board[0][0]) def err(a, b): return 0 2022. 6. 13.
백준 2178 미로 탐색 from collections import deque dy = (0, 1, 0, -1) dx = (1, 0, -1, 0) # n -> y m -> x n, m = map(int, input().split()) labyrinth = [input() for _ in range(n)] # n개의 배열 m의 길이 check = [[False] * m for _ in range(n)] deq = deque() deq.append((0, 0, 1)) check[0][0] = True def err(a, b): return 0 2022. 6. 13.
백준 11724 연결 요소의 개수 import sys sys.setrecursionlimit(10 ** 8) input = sys.stdin.readline n, m = map(int, input().split()) connect = [[False] * n for _ in range(n)] for _ in range(m) : x, y = map(int, input().split()) connect[x-1][y-1] = True connect[y-1][x-1] = True answer = 0 check = [False] * n def dfs(i): for j in range(n): if not check[j] and connect[i][j] : check[j] = True dfs(j) for i in range(n): if not chec.. 2022. 6. 13.
백준 1449 수리공 항승 import sys input = sys.stdin.readline n, l = map(int, input().split()) packing_list = [False] * 1001 answer = 0 times = 0 for i in map(int, input().split()): packing_list[i] = True #1000 회 반복 while times 2022. 6. 13.
백준 1931 회의실 배정 import sys input = sys.stdin.readline answer = 0 time = 0 time_table = [] #입력부 for _ in range(int(input())) : start, end = map(int, input().split()) time_table.append((end, start)) #연산부 time_table.sort() for end, start in time_table : if time 2022. 6. 13.