BOJ 10539번 수빈이와 수열

수열 B가 3, 2, 3, 5일 떄

  1. 3 = 3/1

  2. 2 = (3+x)/2 에서 x = 1

  3. 3 = (3+x+y)/3 에서 y = 5

  4. 5 = (3+x+y+z)/4 에서 z = 11

10539.cpp

#include <bits/stdc++.h>
using namespace std;
int arr[101];
int res[101];
int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> arr[i];
    }
    int plus = 0;
    res[1] = arr[1];
    for (int i = 2; i <= n; i++) {
        plus = 0;
        for (int j = 1; j <= i; j++) {
            plus += res[j];
        }
        res[i] = arr[i] * i - plus;
    }
    for (int i = 1; i <= n; i++) {
        cout << res[i] << ' ';
    }
}

BOJ 2953번 나는 요리사다 문제

5x4 배열에서 행마다 sum을 구하고 가장 큰 행의 번호를 출력한다.

2953.cpp

#include <bits/stdc++.h>
using namespace std;
int arr[5][4];
int main() {
    int sum, max_ = 0;
    int cook = 0;
    for(int i=0;i<5;i++){
        for(int j=0;j<4;j++){
            cin >> arr[i][j];
        }
    }
    for (int i = 0; i < 5; i++) {
        sum = 0;
        for (int j = 0; j < 4; j++) {
            sum += arr[i][j];
        }
        if (sum > max_) {
            cook = i + 1;
            max_ = sum;
        }
    }
    cout << cook << ' ' << max_;
}

BOJ 1193번 분수찾기 문제

배열을 45도 회전시키면 아래와 같이 나온다.

1/1

1/2 2/1

3/1 2/2 1/3

1/4 2/3 3/2 4/1

5/1 4/2 3/3 2/4 1/5

1/6 2/5 3/4 4/3 5/2 6/1

분자 분모의 합이 1행에서 2, 2행에서 3, 3행에서 4, 4행에서 5..가 되고,

홀수행은 합-1부터 시작해서 1씩 감소한다.

짝수행은 1부터 시작해서 합-1까지 증가한다.

1193.cpp

#include <bits/stdc++.h>
#define MAX_ 10000
using namespace std;

int main() {
    int n;
    cin >> n;

    int i = 1;
    int s = 0;
    while (true) {
        if (n - i <= 0) {
            break;
        }
        n -= i;
        i++;
        s++;
    }

    if (s % 2 == 0) {
        cout << s + 2 - n << "/" << n;
    } else {
        cout << n << "/" << s + 2 - n;
    }
}

YOLO Build on Windows

  • CUDA, cuDNN, OpenCV, VS 2017을 사용합니다.
  • AlexyAB의 darknet을 이용했습니다.

빌드하기 전 준비사항

  • VS 2017은 설치되어있다는 가정하에 진행하겠습니다.

    • Visual Studio Installer에서 데스크톱용 VC++ 2015.3 v14.00(v140) 도구집합 먼저 설치 하시고 진행하셔야 합니다(CUDA 설치 전에 해야하기 때문).
      Image
  • 위 github에서 repository를 Downlaoad 받습니다. 이 경로를 darknet이라고 부르겠습니다.

  • CUDA와 cuDNN을 설치하셔야 하는데, 버전을 기억해두셔야 합니다.

    • CUDA : https://developer.nvidia.com/cuda-downloads
      • Visual Studio Integration 체크 해서 설치해야합니다.
        Image
      • 자신의 CUDA 버전에 맞는 cuDNN을 다운받고 압축을 푼 후 CUDA가 설치된 경로에 붙여넣기 하면 됩니다. CUDA와 똑같은 경로를 cudnn이라는 이름으로 환경변수 등록까지 마쳐야합니다.
  • 다음으로 OpenCV를 다운받습니다.

    • OpenCV Download 링크에서 들어가서 다운받습니다.
    • 저는 2.4.13.6 버전을 다운받았습니다.
  • OpenCV를 설치한 경로는 환경변수에 아래와 같이 등록해줘야합니다.

    • 제 opencv 경로는 C:\opencv\opencv2.4.13.6\으로 시작합니다.

빌드

  • darknet\build\darknet\darknet.sln을 실행합니다.
  • 먼저 상단의 메뉴에서 Release, x64로 바꿔줍니다.
    Image
  • 프로젝트 속성 - C/C++ - 일반 - 추가 포함 디렉터리에서 opencv 경로를 자신의 경로에 맞게 수정합니다.

Image

  • 프로젝트 속성 - 링커 - 일반 - 추가 라이브러리 디렉터리에서 opencv 경로를 수정합니다.

Image

  • 빌드 종속성을 자신의 CUDA 버전에 맞게 수정합니다.

Image

Image

  • 빌드(F7)를 누르면 끝입니다!

Yolo-mark로 Image에 bounding box 그리기 on Windows

  • Yolo_mark github 페이지를 참고했습니다.
  • OpenCV, VS 2017을 사용합니다.

빌드

  • 먼저 OpenCV를 다운받습니다.

  • OpenCV Download 링크에서 들어가서 다운받습니다.

    • 저는 2.4.13.6 버전을 다운받았습니다.
  • OpenCV를 설치한 경로는 환경변수에 아래와 같이 등록해줘야합니다.
    Image

  • 위 github에서 repository를 Downlaoad 받습니다.

  • yolo_mark.sln을 실행합니다.

  • 프로젝트 속성에서 아래를 수정합니다.

Image

  • opencv\build\include 추가

Image

  • 링커에 opencv\build\x64\vc14\lib 추가

  • Debug -> Release 모드로 바꾼뒤 빌드를 합니다.

  • \x64\Release\yolo_mark.cmd를 실행합니다.

  • Box를 그릴 Image를 \x64\Release\data\img 폴더에 넣고, Own Dataset을 위해\x64\Release\data\obj.names를 수정해야합니다.

BOJ 9414번 프로그래밍 대회 전용 부지 문제

크리스마스 기념 꿀잼꿀문입니다. 왜 틀렸는지 모르겠는데 3번이나 틀렸습니다. 왜 틀렸을까요 로직이 다 같았는데.. long long 으로 바꾼 뒤 맞은거 같네요.

9414.cpp

#include <bits/stdc++.h>
using namespace std;

long long power(int n, int x) {
    int result = 1;
    for (int i = 0; i < x; i++) {
        result *= n;
    }
    return result;
}

void solve() {
    int n;
    long long sum = 0;
    int size = 0;
    vector<int> v;
    while (true) {
        cin >> n;
        v.push_back(n);
        size++;
        if (n == 0) {
            break;
        }
    }
    sort(v.begin(), v.end());
    reverse(v.begin(), v.end());
    // 역순으로 정렬해서 비싼 땅을 먼저 산다.
    for (int i = 0; i < size; i++) {
        sum += 2 * (long long)power(v[i], i + 1);
    }
    if (sum >= 5000000) {
        cout << "Too expensive" << '\n';
    } else {
        cout << sum << '\n';
    }
}

int main() {
    int test;
    cin >> test;
    while (test--) {
        solve();
    }
}

Tensorflow-gpu 설치 및 Jupyter 등록 on Windows

  • Windows, Cuda 9.0, cudnn 7.4, Anaconda는 설치되어 있는 환경에서 진행합니다.
  • Anacomda prompt를 실행합니다.
  • 새 가상환경을 만들기 위해 아래를 입력합니다. tf는 가상환경의 이름이고 python version은 3.6으로 했습니다.
    • conda create -n tf pip python=3.6
  • 가상환경을 활성화시킵니다.
    • activate tf or source activate tf
  • pip를 업그레이드 시킵니다.
    • python -m pip install --upgrade pip
  • tensorflow-gpu를 설치합니다.
    • pip install --ignore-installed --upgrade tensorflow-gpu
  • Jupyter에 등록하기 위해 아래 명령을 입력합니다.
    • conda install notebook ipykernel
    • python -m ipykernel install --user --name tf --display-name "Tensorflow"
  • 환경 확인 : conda info --envs
  • conda 환경 삭제 : conda remove --name ENV_NAME --all
  • Jupyter에서 커널 삭제 : jupyter kernelspec uninstall tf

'머신러닝 > 기타' 카테고리의 다른 글

[PyTorch] PyTorch 설치 및 Jupyter 등록  (0) 2018.11.11

+ Recent posts