본문 바로가기

전체 글

(210)
친구 네트워크 친구 관계가 추가될 때마다 그룹에 몇 명이 있는지 출력해야 하기 때문에 그룹에 몇 명이 있는지 탐색하는 과정을 F번 반복해야 한다.일일이 다 친구들과의 관계를 탐색하는 식으로 하면 시간 복잡도가 최소 F제곱이어서 불가능하다. union-find 알고리즘을 쓰면 이를 해결할 수 있다.#include#include#includeusing namespace std;map friends;int group[300004];int gsize[300004];int fin(int x){ if(x==group[x]) return x; return fin(group[x]);}int uni(int a, int b){ int ga = fin(a); int gb = fin(b); if(ga != gb)..
앱 개발 - flutter (4) 파이어베이스 서버 이용한 채팅 앱 2 지난번에 ui 구성을 완성했으니 이제 서버 연동을 위해서 firebase를 이용해볼 차례이다.firebase 홈페이지에 들어가면이렇게 뜨는데 우측 상단에 go to console을 눌러서 구글 계정으로 로그인을 하고 프로젝트를 만들면 된다. 먼저 앱에 firebase를 등록해야 한다.여기서 안드로이드를 선택해주고 들어가면이렇게 뜬다.패키지 이름은 android > app > build.gradle 파일 > defaultConfig 부분에서 찾을 수 있다.나머지는 입력할 필요 없고 앱 등록을 누르고 나오는 google-service.json 파일을 받아서 android > app 폴더에 넣어주면 된다.이후에는 그냥 시키는대로 하면 되는데 우선 app 말고 android 폴더 내의 build.gradle 파..
앱 개발 - flutter (3) 파이어베이스 서버 이용한 채팅 앱 1 앱을 만들 때 서버가 있어야 로그인도 할 수 있고 이것저것 정보 저장을 할 수 있기 때문에 서버를 연동하는 법을 알아볼 것이다.파이어베이스 서버를 이용해서 채팅 앱 만드는 강의가 유튜브에 있길래 이번 글에서는 일단 그대로 따라해볼 것이다. 먼저 image 폴더를 만들어주고 앱에서 사용될 배경 이미지를 넣어준다.그리고 pubspec.yaml 파일로 가서flutter의 assets 부분에 저렇게 추가한 이미지를 넣어줘야 한다. 이번에는 lib 폴더에 config 폴더를 만들고 palette.dart라는 파일을 만들어준다.flutter의 painting 패키지를 import하고 Palette라는 클래스를 만들어서 사용할 색들을 지정해준다. 화면 구성을 위한 스크립트를 모아두기 위해 lib 폴더에 screens..
앱 개발 - flutter (2) 기본 코드 해석 이전에 개발환경 구축하면서 기본 flutter 프로젝트를 만들면 나오는 앱의 코드를 분석해보면서 flutter의 기본적인 코드 구성을 살펴볼 것이다.import 'package:flutter/material.dart';먼저 맨 위의 이건 그냥 flutter를 import하는거라 어떤 flutter 프로젝트를 만들던 가장 먼저 써야 하는 코드이다.void main() { runApp(const MyApp());}그 다음에 이건 flutter 앱을 실행시키는 시작 코드이다.MyApp은 위젯 클래스이다.위젯에 대해 간단히 설명하자면, 그냥 화면을 구성하는 모든 것이다.버튼, 텍스트 등의 ui, ui의 padding, 이미지 파일 등 그냥 화면의 전부라고 생각하면 될 것 같다. class MyApp exten..
앱 개발 - flutter (1) 설치 및 개발 환경 구축 flutter는 구글에서 개발한 앱 개발 프레임워크로, ios와 안드로이드 모두 사용 가능한 크로스 플랫폼이라는 특징이 있다.언어는 dart 언어를 사용하는데, javascript와 유사하다고 한다. (dart는 써본 적 없긴 한데 javascript 써 봤으니 괜찮겠지..) 크로스 플랫폼 프레임워크로 리액트가 있긴 하지만 성능 면이나 난이도 면에서 flutter가 더 좋다고 하여 공부를 시작해보려 한다.우선 설치를 하고 앱 화면을 띄워보는 것까지 할 생각이다.구글에 flutter 검색하면 나오는 공식 홈페이지 https://flutter.dev/ 에 들어가서우측 상단에 get started를 누르고 자기 노트북이나 컴 os에 맞게 선택을 한 뒤에 flutter를 이용해안드로이드 앱, 웹, 데스크탑 앱 ..
앱 개발 - flet (창의플랫폼) (2) 저번 글에서 flet의 기초 사용법을 알아봤으니 이제 창플에서 필요한 앱을 만들기 위한 기능들을 알아보고 합쳐서 간단하게 완성을 해 볼 생각이다.기능은 크게 4개가 필요한데, 우선 버스 번호판을 찍어서 인식하고 몇번인지를 출력해야 한다. 그리고 버스가 왼쪽에 있는지 오른쪽에 있는지도 출력해야 한다.2번째로 음성 녹음을 하면 그 음성의 텍스트를 추출해서 출력한다.3번째로 2번에서 추출된 텍스트를 이용해 특정 번호의 기사의 폰으로 카톡을 전송하면 된다.그리고 마지막으로 사진을 찍었을 때 빈자리가 어디 있는지 찾아주는 기능도 있다. (이 부분은 나중에 추가되었다.) 당장 만들 것은 프로토타입이기 때문에 실제 카메라와 녹음 연동은 안하고 파일을 업로드하면 기능이 작동하게 만들거다.기능적인 부분의 코드는 이미 다..
앱 개발 - flet (창의플랫폼) (1) 창의플랫폼에서 진행하는 프로젝트인 시각장애인을 위한 버스 이용 도우미 앱을 제작해야 해서 앱 개발을 시작한다.지금까지 해본 앱 개발은 안드로이드 스튜디오밖에 없는데 안드로이드 스튜디오는 정말 내가 해본 프로그래밍 중 가장 싫어한다. 일단 내가 거의 쓰지도 않는 java가 개발 언어이고 뭐 하려고 할 때마다 gradle 동기화 문제, manifest 파일에 뭐 추가 안해서 생기는 문제 등등 직접적인 코드보다 라이브러리 불러오는 과정에서 에러가 너무 많이 발생한다.그것 말고도 가상 머신에서 앱 테스트 실행해보려고 해도 오지게 느리고 툭하면 강제종료된다.ui 구성하는것도 xml 파일에 코드로 하거나 직접 ui 옮겨서 화면 구성하면 자동으로 되는데 이것도 상당히 불편하고 예쁘지도 않다. 사진 불러오거나 꾸미려면..
카카오톡 전송 api 개발 인공지능이라고 하기엔 뭐하지만 딱히 넣을 카테고리가 없어서 여기에 쓴다.카톡을 자동으로 전송해주는 코드를 짜는 방법에 대한 글이다. 먼저 카카오 developers 에 가입을 해서 내 어플리케이션을 만든다.들어오면 이렇게 되어있고 카카오 로그인을 활성화 시켜주면 된다.그리고 그 밑에 redirect url을 대충 https://example.com/oauth 이런걸로 설정해준다.동의항목은 이렇게 설정하면 된다. 위에 보면 앱 키라는 부분이 있는데 거기 들어가면 rest api를 확인할 수 있다.https://kauth.kakao.com/oauth/authorize?client_id={REST API 키}&redirect_uri= https://example.com/oauth&response_type=co..