Legacy 21

Dart 기초 (3) Dynamic Type

void main() { // 변수를 선언하고 거기에 어떤 값을 할당하지 않으면 dynamic // dynamic = 어떤 type의 변수인지 알 수 없는 상태 var animal; animal = 'cat'; animal = 45; animal = true; print(animal); // dynamic으로 직접 명시해줄 수 있음 dynamic animalAge; animalAge = 19; if(animalAge is String){ var ageLength = animalAge.length; print(ageLength); } if(animalAge is int){ int age = animalAge; print(age); } // 다만, dynamic은 정말 필요할 때만 사용 } dynamic 타..

Dart 기초 (2) Variables (변수)

void main() { // var (String) var animal = 'dog'; print(animal); // 변수 명시적 선언 String String anotherAnimal = 'cat'; print(anotherAnimal); // var로 변수 선언한 animal을 다른 값으로 대체 animal = 'elephant'; print(animal); // String으로 변수 선언한 anotherAnimal 다른 값으로 대체 anotherAnimal = 'snake'; print(anotherAnimal); } var 관습적으로 함수나 메소드 내부에 지역 변수를 선언할 때 사용

[백준] 브루트포스 - 덩치(7568)

백준 7568번: 덩치 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net wh = [] result = [] N = int(input()) for _ in range(N): w, h = map(int, input().split()) wh.append((w, h)) for i in range(N): rank = 0 for j in range(N): if (wh[i][0] < wh[j][0]) and (wh[i][1] < wh[j][1]): rank += 1 result.append(rank + 1) ..

[알고리즘] 브루트포스 알고리즘 brute force

브루트포스(Brute Force) 브루트포스 알고리즘은 문자열에서 특정 문자를 탐색하는 검색 알고리즘이며 선형 탐색이라고 보면 된다. 단순 무식하게 가능한 모든 경우의 수를 다 체크하는 가장 기본적인 알고리즘이다. 브루트포스로 알고리즘을 설계할 땐, 모든 경우의 수를 다 고려해야 한다. 대표적으로 for문, while문 등의 반복문을 통해 가능한 모든 경우의 수를 다 고려할 수 있다. 시간복잡도 역시 매우 크다는 게 단점이지만 암호학에선 가장 확실한 방법으로 많이 사용된다.

플러터(Flutter) 설치

참고 링크 https://brunch.co.kr/@mystoryg/114 플러터(Flutter) 개발 환경 구축 목적에 맞는 개발 환경 구축하기 플러터는 크로스 플랫폼 앱 개발을 위한 프레임워크인 만큼 다양한 목적으로 사용될 수 있다. 따라서 개발 환경도 목적에 따라 선택적으로 구축 가능하다. 플러 brunch.co.kr https://wenna.tistory.com/16 [Flutter] 플러터 시작하기 - 다운로드 및 설정 이번 글에서는 플러터를 설치하고 사용 가능하도록 설정하는 과정을 다루어보고자 한다(。・∀・) ノ゙ 필자 개인적으로 플러터 설정 때 애로사항이 많은 기억이 있어 필요하신 분이 있으시다 wenna.tistory.com

[업무기록] google appscript 활용한 구글 스프레드시트 자동화(이진 탐색 알고리즘)

최근 맡았던 업무 중에 쿼리문을 매주 한 번씩 주기적으로 돌린 다음, 구글 스프레드시트로 업데이트 하는 과정 전체를 자동화하는 일감이 있었다. 어제 최종 완료되었는데 사실 중간에 추가 요청이 들어와서 전체 코드를 갈아엎었다. (1) googleapiclient를 활용해 google bigquery와 연동하여 주피터 환경에서 데이터를 불러오기 (2) gspread를 활용해 구글 스프레드시트로 데이터 업데이트(매주 월요일에 최근 1주 데이터 업데이트) (3) 해당 워크시트에서 google appscript를 활용해 일정 기간 동안의 데이터 삭제하는 기능 구현(버튼 클릭하면 스크립트 실행) 이렇게 해서 전달했는데 추가적인 요청사항이 생겨서 전체 과정을 아예 수정했다. (1) googleapiclient를 활용..

깃허브 시작하기(프로젝스 생성)_github project create

깃허브 프로젝트 생성 관련 명령어 github repository 생성 후 로컬 연결할 때 (1) git config --global user.email '아이디@이메일.com' (2) git config --globar user.name '유저 이름' (3) git init (4) git remote add origin "repository 주소" (5) 코드 업로드 준비 : git add . (6) 코드를 repository에 올릴 때 쓸 메시지 : git commit -m '메시지' (7) master branch에 코드 업로드 : git push origin master (8) repository에서 로컬로 코드 복제할 때 : git clone "repository 주소" (9) add된 파일 다..

원하는 수만큼 0을 채워넣자! zfill() 함수

쓸 일이 있을까...싶은 함수지만 알아두면 좋은 함수다. 특히, 굉장히 많은 데이터 파일을 불러올 때, 그리고 해당 파일들 이름에 201901, 201902, 201903... 식으로 일련의 숫자들이 들어간다면 아마 이 함수가 필요할 것이다. 그렇다면, zfill()함수는 언제, 어떻게 쓸까? 예를 들어, 다음과 같은 파일들이 있다고 가정해보자 공공데이터의 일부인데 2018년 1월부터 2019년 8월까지 데이터가 있음을 확인할 수 있으며, 이걸 딱 봤을 때 직관적으로 "for문 들어간 함수를 만들어서 불러오면 되겠구나!"라는 생각이 든다. 문제는 다음 상황에서 발생한다. for i in range(2018, 2020): for j in range(1, 13): ij = '{}{}'.format(i, j)..

[토이프로젝트1] 코로나19 데이터 각 컬럼 시각화 및 ARIMA/Prophet 분석

확진자가 5000명을 넘어선 가운데, 현 시각 기준으로 총 88명의 환자가 완치 판정을 받았다. 정부 당국과 전문가들 사이에선 앞으로 완치 사례가 더 많이 나올 것이란 기대감이 커지고 있다. 대부분의 확진 환자들이 신천지 신도들에게서 발생했다는 점, 그리고 대구와 경북이 아닌 지역에선 그나마 전염 속도가 빠르지 않다는 것이 앞으로를 조금이나마 낙관적으로 바라볼 수 있게 한다. 아래의 데이터는 지난 번에 분석한 코로나19 캐글 데이터의 업데이트 버전이다. 3월 4일까지의 데이터가 기록돼있지만 결측치가 없는 확진 날짜(confirmed_date) 피처와는 달리, 회복일(released_date)과 사망일(deceased_date) 피처에는 결측치가 굉장히 많다. 따라서, 컬럼 간의 관계를 살펴보는 건 조금 ..