전체 글 173

[C++] 벡터(vector) 를 활용하여 큐(queue) 자료구조 구현하기

배열과 다르게 크기를 동적으로 조절할 수 있어 유용한 C++의 vector를 사용하여 FIFO 자료구조 queue를 구현해 보겠습니다. 선언 vector를 사용하기 위해 아래와 같이 선언할 수 있습니다. #include ... vector queue_v; 값 마지막에 추가하기 push_back 함수를 사용하여 vector의 끝에 원소를 추가할 수 있습니다. int i=2; queue_v.push_back(i); 첫 번째 값 제거하기 vector의 erase 함수를 사용하여 vector의 가장 첫 원소의 인덱스를 제거할 수 있습니다. queue_v.erase(queue_v.begin()); 첫 번째 값 저장 후 제거하기 값을 빼기 전에 뺄 값을 다른 곳에 활용해야 할 경우가 빈번한데, fron..

[MacOS] 외부에서 맥 화면 원격 접속하기 (무료)

앞선 글에서는 맥북, 맥 미니 모두 동일한 네트워크에 연결되어 있는 경우에만 해당하였습니다. 이번 글에서는 외부에서도 원격 접속 가능하도록 공유기 설정을 하는 방법을 안내합니다. - 제가 사용중인 공유기는 iptime 공유기이므로 iptime 공유기를 기준으로 설명하겠습니다. - 맥 미니가 iptime 공유기에 정상적으로 연결되어 있고, 인터넷이 되는 상황을 전제로 설명하겠습니다. iptime 관리자 로그인 공유기에 연결된 상태에서 iptime 관리자 대시보드 주소 192.168.0.1 에 접속하여 로그인합니다. 맥 미니 IP 확인 맥 미니의 IP를 확인해야 합니다. 커넥션 정보에 들어가서 맥 미니의 IP를 확인합니다. 확인한 IP를 기억해 주세요. 일반적으로 해당 내부 IP는 동적할당된 IP이므로 안정..

소프트웨어 2023.07.18

[MacOS] 맥북에서 맥 미니 원격 접속하기 (무료)

최근 개인용 서버로 사용하기 위해 맥 미니를 중고로 업어왔습니다. 24시간 서버로 운용하면서 간간히 원격으로 접속할 예정인데요, 맥북에서 맥 미니로 원격 접속하는 방법을 써보겠습니다. (무료, 십만원 짜리 apple remote desktop 미사용) 사전 조건 원격 접속하기 위해서는 아래와 같은 조건이 전제가 되어야 합니다. 맥북, 맥 미니 동일한 apple계정으로 로그인되어 있어야 합니다. 맥북, 맥 미니 동일한 네트워크에 접속되어 있어야 합니다. 맥 미니 시스템 설정 -> 공유 -> 화면 공유 허용상태여야 합니다. 원격 접속 맥북에서 파인더를 열어 네트워크를 클릭합니다. 원격 접속하고자 하는 맥 미니를 우클릭하여 화면 공유를 선택합니다. 맥 미니에 셋팅된 사용자 이름과 비밀번호(맥 미니의 비밀번호)..

소프트웨어 2023.07.18

[MacOS] M1 실리콘 환경에서 g++ 로 c++ 프로그래밍하기

이 글은 homebrew와 xcode가 정상적으로 설치된 환경을 전제로 진행합니다. Xcode Command Line Tools 설치 터미널을 열어 아래 명령을 통해 command Line Tools을 설치합니다. xcode-select –install cask 설치 homebrew를 통해 cask를 설치합니다. brew install cask 컴파일 g++ 또는 clang 명령어를 통해 c++ 언어로 작성한 cpp 파일을 아래와 같이 컴파일할 수 있습니다. g++ test.cpp // 또는 clang test.cpp

소프트웨어 2023.07.09

[백준] 1463 1로 만들기

요약 처음에 2차원 배열로 풀이를 작성하였지만 시간초과였습니다. 1차원 배열의 Bottom-UP 방식의 배열을 1회 순회하는 코드를 작성하여 문제를 해결하였습니다. 이전 단계에서의 최솟값을 어떠한 값을 기준으로 해야 하는 지 아는 것이 문제의 핵심으로 보입니다. 제가 이전에 풀었던 설탕 배달 문제와 유형이 동일합니다. 솔루션 python3 으로 솔루션을 작성하였습니다. def getMin(n): ''' e.g n==10일때 0 1 2 3 4 5 6 7 8 9 10 0 0 1 2 3 ''' dp = [0 for _ in range(n+1)] dp[1] = 0 for index, value in enumerate(dp): if index == 0 or index == n: continue if index+1

[Kotlin] 코틀린 제네릭(Generics)의 기본

코틀린은 타입 안정성과 유연함 극대화에 대한 고민을 통해 만들어진 언어입니다. 이번 글을 통해 코틀린 제너릭이 무엇인지 알아보겠습니다. 제너릭 (Generic) 제너릭은 클래스 내부에서 사용하는 변수의 자료형을 외부에서 설정할 수 있도록 돕는 기법입니다. 아래의 코드를 보면 동일한 클래스 Phone 내의 version변수가 아이폰은 문자열, 갤럭시는 정수로 저장되는 것을 확인할 수 있습니다. 갤럭시의 버전이 항상 정수로 이루어져 있고 아이폰의 버전은 항상 문자열로 표시, 저장되어야 할 때(예시를 위한 가정) 이 상황에서 제너릭은 기존의 엄격한 타입 체킹의 제약에서 벗어나는 방법이 될 수 있습니다. fun main() { var iphone: Phone = Phone("14ProMax") var galax..

[백준] 2839 설탕 배달

요약 DP bottom-up 방식으로 문제를 풀면 됩니다. 기존 존재하는 값과의 비교를 통해 최솟값을 갱신하는 구조, 문제 풀이에는 크게 문제가 없었지만 index out of range 에러를 방지하기 위한 N 과 i+3, i+5 과의 비교 식을 잘못 작성하였었습니다. 솔루션 def getMinCount(N): dp = [-1 for _ in range(N+1)] if N >= 3: dp[3] = 1 if N >= 5: dp[5] = 1 for i, v in enumerate(dp): if v == -1: continue if N >= i+3: if dp[i+3] == -1 or v+1 = i+5: if dp[i+5] == -1 or v+1 < d..

[자동매매] 23-07-02 모델 변경, 학습 방법 변경

학기 수업에서 진행한 자동매매 봇에 대한 업데이트 기록입니다. 기존 모델 개선 colab pro 요금제에서 제공하는 메모리를 초과(26GB), 학습에 사용하는 모델의 크기에 비해 비정상적인 크기로 q_table 수정, state의 갯수를 4개로 줄이고 bin_size를 8개에서 32개로 늘려(이산화 크기) 25+GB의 모델 크기를 1.2GB 이하로 축소하였습니다. 이전 6분간의 시세 차이 대신 이전 120분간의 시세의 통계값, 120분간의 거래량으로 q_table의 state를 변경(평균값, 최대값 및 최소값의 차, 중간값 등)하였습니다. 테스트 시 손실 한도 적용 일종의 서킷 브레이커로 테스트 데이터를 통해 자동매매를 진행할 때 누적 손해가 일정치 이상으로 발생할 경우 해당 테스트를 중단하도록 설정하였..

[React-Native] android CodePush 를 통해 업데이트 진행하기

이 글은 앞선 React-Native 프로젝트의 app center 설정이 완료된 전제하에 진행합니다. 설정을 완료하지 않은 경우 먼저 app center sdk 설치 관련 글을 참고하세요. android CodePush 가이드 - 1. [React-Native] android App Center SDK 등록하기 - 2. [React-Native] android CodePush 시작하기 - 3. [React-Native] android CodePush 를 통해 업데이트 진행하기 (현재 글) Staging Developement 진행 먼저 프로젝트 디렉토리에서 appcenter 로그인을 진행합니다. appcenter login ... Logged in as appcenter사용자이름 아래 명령을 통해 st..