kimnanhee97의 등록된 링크

 kimnanhee97로 등록된 네이버 블로그 포스트 수는 68건입니다.

***** ***** ***** [내부링크]

이런 생각, 저런 생각.이런 고민, 저런 고민.할 수 있게.성장할 수 있게.기회 주셔서 감사합니다.살아온 24년 여정에서 만난 인연들에게.24.5년 이후로 또 새로운 인연이 기대된다.- 제목:생각해보면 나의 주변 사람들은 모두 고마운 사람들이 아닐까.안 고마운 사람 찾기 힘들다.

Segmentation model Unet paper에서의 error 측정 [내부링크]

Unet paper를 다시 읽다가 전에는 자연스럽게 지나쳤던 궁금증, Wraping, Pixel, Rand error를 마주하게 되었다.논문에서는 Wraping Error를 기준으로 정렬을 해서 표를 그렸는데,Wraping Error가 다른 모델에 비해 가장 작다는 점과Wraping Error가 객체를 잘 탐지했다는 지표를 가장 잘 나타냈다고 생각해서 그런게 아닐까.인터넷에 찾아보니, 각 error에 대해 설명하는 자료가 많이 있지 않았다.정확히 이해한건지는 누구에게 물어봐야 할까.1. Caffe로 구현된 논문의 소스 코드를 참고하면 정확한 수식이 나올 수 있으므로, 코드 살펴보기2. trainableSegmentation.metrics.WarpingError 라는 것을 import해서 error를 측정 가능하므로.......

UNet 구현 - Cross Entropy Loss보다 Binary Cross Entropy Loss를 추천하는 이유 [내부링크]

UNet 논문을 보면 마지막 레이어에 out_channels를 2로 해놓고 있다.Output channels가 2이므로 Cross Entropy Loss를 이용해서 Loss function을 구성할 수 있다.(세포 부분인 곳과 경계인 부분을 보고 두 클래스로 나누는 데,)하지만, 클래스가 2개인 경우는 binary cross entropy를 사용하는 것이 편하다.- Binary Cross Entropy로 결과를 출력해볼 경우깔끔하게 output label이 label(input) 값과 비슷한 모습으로 나온 것을 확인할 수 있다.- Cross Entropy로 결과를 출력해볼 경우Cross Entropy의 경우 Output 모습이 위와 같이 나온다. 우리가 원하는 모습은 Output 색상을 뒤집는 형태이다.결과 출력에서 추가로 함수를 작성하.......

대입 연산자와 비교 연산자 무엇이 더 빠를까? [내부링크]

문제를 풀면서 continue 문을 많이 사용하는 습관이 길러졌다.굳이 if문으로 비교할 필요가 없는 부분인데, continue를 씀으로 더 빠를까?예상대로 비교하는 것이 훨씬 느렸다.visual studio에서 어셈블리어를 보면훨씬 복잡한 것을 알 수 있었다.mov = movecmp = compare 비교해서 0또는 1jmp = jump참고: 어셈블리어 보는 법(아주 설명 친절히 잘해놓음)http://blog.naver.com/PostView.nhn?blogId=tipsware&logNo=221357889029&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=3&postListTopCurrentPage=1&from=postList

***** ***** * [내부링크]

보여주기식 말고, 실력을 키우자처음처럼.

백준 - 새로운 게임 2 [내부링크]

문제: https://www.acmicpc.net/problem/17837주요하게 참고할 부분(C++ 스타일)C style참고: https://github.com/nh9k/algorithm-problem/blob/master/my_code3/swexpert/baek-newgame2/baek-newgame2/baek-newgame2.cppC++ style1. 빨간색 보드를 만날 경우 reverse 해주었는데, 흰색옮기는 것처럼 reverse iterator 사용은?reverse iterator 사용: erase 할 수 없다.iter.base()를 사용하여 제거할 수 있으나, 원하는 target까지 제거할 수 없다고 생각한다.2. 복잡도 더 줄일 방법은?(1) 돌때마다 erase 해줄 경우: vector erase하면서 이중포인터 연결이 필요하므로, 제거수*2개, K가 최대 10개이므로 최대 10번 순환 = 최대 2.......

백준 - 게리맨더링 2 [내부링크]

문제: https://www.acmicpc.net/problem/17779https://github.com/nh9k/algorithm-problem/blob/master/my_code3/swexpert/baek-gm2/baek-gm2/baek-gm2.cpp

***** ***** ** [내부링크]

꼼꼼히 쌓으며 걸어온 길은 쉽게 무너지지 않더라.

Hyperparameter Optimization과 모델 경량화 [내부링크]

Hyperparameter: Learning rate, Minibatch 사이즈, regularization 계수(L1, L2..), Hidden layer 층수, Convolution layer 사이즈Hyperparameter Optimization: 하이퍼 파라미터 최적화, 학습된 모델의 일반화 성능을 최고/ 최적 수준으로 내기 위해 시행하는 것.최적의 Hyperparameter를 탐색하는 방법1. Manual Search : 개발자의 경험 및 직감으로 여러 차례에 걸쳐 하이퍼파라미터 수정 및 실험으로 결정2. Grid Search : 원하는 하이퍼 파라미터 후보를 선정하고 실험으로 결정 일정 간격 및 범위을 두고 선정하기도 함 -> 균등하게 실험 가능 Manual 방식보다 체계적인 방식3. Random Search : 최대, 최소 범위 내에 무작위 값을 하.......

RealSense 카메라 setting하기 [내부링크]

0. RealSense?1. lib setting 시작!1.1. 따라하기1.2. English Pack 설치1.3. 테스트2.0. SDK 설치0. RealSense?내가 setting할 카메라는 RealSense D435i 이다.아래 페이지를 참고한다.https://www.intelrealsense.com/depth-camera-d435i/IMU Sensor도 함께 들어있는 제품이며, 중간에 초록색 카메라같이 생긴 레이저부분에서 레이저를 송수신하여 깊이(Depth, 즉 쉽게 말해, 거리)를 측정하는 Depth Camera 이다.TIP1. 센서 간단 설명IMU 센서는 간단히 말해 주로 3축 가속도, 3축 자이로 센서를 이용해서 관성력을 측정하는 센서이다. 2개의 3축을 이용하여, filtering을 잘할 경우 Roll, Pitch를 거의 정확하게 계산할 수 있다.Yaw축.......

***** ***** *** [내부링크]

지금 공부하지 않으면 미래의 내가 후회할 것들.

GAN 구현 - 학습 시 Loss에 관하여 [내부링크]

https://github.com/nh9k/pytorch-implementation#GAN구현시 직면했던 문제점:처음에 구현했을 때 모델이 epoch 1에서 바로 수렴해버렸다..그리고, Generator loss는 상승(increase)하고, Discriminator loss는 하강(decrease)해서 이상했다.여러가지 수정해보며 실험해본 결과 다음 3가지를 통해 문제를 해결할 수 있었다.아주아주 아주! 중요했던 문제의 해결책:1. 모델에 batch normalization 적용안함2. Discriminator layers 간소화해야함(너무 깊게 깊게 쌓지 말자)3. Model input,output에 image shape 맞춰주기Jason님 께 여쭤봤는데,GAN은 학습이 잘된다고 Loss가 계속 떨어지지 않는다고 한다.어느정도 떨어지다가 수렴(co.......

Shadow-removal (research.) [내부링크]

* GANunpaired datahttps://github.com/xw-hu/Mask-ShadowGANinstance shadow detection - same authorhttps://arxiv.org/pdf/1911.07034.pdfpaired data, Source code not released yethttps://github.com/DeepInsight-PCALab/ST-CGAN* Computer vision similar to my codehttps://github.com/kittenish/Image-Shadow-Detection-and-Removal-https://github.com/yanqingan/multiscale-deshadowhuman-inputhttps://github.com/Xiaoming-Yu/ShadowRemoval* othersreal-to-cartoonhttps://github.com/mnicnc404/CartoonGan-tensorflow

***** ***** **** [내부링크]

처음엔 어리숙해 보이지만, 알아서 잘하는 사람.그런 사람.요즘 애들보다 훨씬 낫다는.그런 사람.

Replay buffer(더 자세하게 알아보기.) [내부링크]

Replay Buffer- GAN 트레이닝을 진행하며 똑같은 샘플별로 성능을 살펴보면 트레이닝을 돌릴때마다 성능이 천차만별이다.- 이 불안정성을 해결하기 위해 주기적으로 Generator가 만들어놓은 사진을 다시 discriminator에게 보여줌, 이 부분은 Discriminator에게만 적용함숙제: 추후 더 정확한 개념 알아보기.reference:http://www.kwangsiklee.com/2018/03/cyclegan%EC%9D%B4-%EB%AC%B4%EC%97%87%EC%9D%B8%EC%A7%80-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90/

What is the Fourier Transform? [내부링크]

Fourier Transform 관련 재밌게 보았던 영상https://www.youtube.com/watch?v=spUNpyF58BY&feature=youtu.behttps://www.youtube.com/watch?time_continue=381&v=5dXiaE7bIoA&feature=emb_logo

개발자라면 한번쯤은 꼭 봐야할 영상 [내부링크]

재밌게 봤던 영상..https://www.youtube.com/watch?time_continue=3024&v=JbH-xzD7IkE&feature=emb_logo

Pytorch(파이토치) 설치 + Anaconda(아나콘다)와 PyCharm(파이참) 연동(2020 ver.) [내부링크]

우선 나는 Windows(윈도우 시스템), 아나콘다(Anaconda) 환경에서 torchenv라는 가상환경을 만들어서 설치했다.1. Pytorch(파이토치) 설치무작정 Conda로 설치하면 torchvision 설치 시 다음과 같은 오류를 얻을 수 있다.(conda install torchvision을 할 수 없다! windows 에는 존재하지 않는다...pip로 설치 가능, MaxOS와 Linux는 바로 2.로 넘어가면 된다.)즉, torch==1.4.0 버전을 깔아야 torchvision을 설치할 수 있다는 말인데,다음 파일을 통해 torch==1.4.0을 설치한다.파일 다운로드해서 vol1만 압축해제하면 70MB짜리 whl이 다운로드 된다.whl 설치하는 방법은 그냥 pip install [이름.whl] 하면 설치된.......

CNN Architecture: Types of Layers [내부링크]

Convolutional Neural Networks have several types of layers:- Convolutional layera “filter” passes over the image, scanning a few pixels at a time and creating a feature map that predicts the class to which each feature belongs.- Pooling layer (downsampling)reduces the amount of information in each feature obtained in the convolutional layer while maintaining the most important information (there are usually several rounds of convolution and pooling).- Fully connected input layer (flatten)takes the output of the previous layers, “flattens” them and turns them into a single vector that.......

Normalization, Standardization, Regularization [내부링크]

Normalization: scale 범위가 크면 노이즈 데이터 생성 or overfitting 0-255 -> 0-1Standardization: Z-score 같은,, 표준화 확률 변수Regularization: 너무 높은 Complexity 피하기 위한 규제, L1, L2 convolutional layer 사이에 쓰는 relu 같은 느낌Q. normalization을 왜하는가? 1. 하면 -1~1로 크기 비슷하게 해야 치우치지 않고 학습함 -> ReLu, sigmoid로도 되는데? -> 0~255이미지라면, 255에 가까우면 무조건 1이라고 할듯 2. 안하면 backprop 할때 오차 영향 있음 3. 하면 input이 batch norm으로 통일할 수 있음 4. 안하면 learning rate 작게해서 학습해줘야 실패안함 5. 학습할 때 다른 (Ex. activation) 함수들도 -1.......

Fully connected layer [내부링크]

1. Softmax - sigmoid, relu와 같은 activation의 일종 - 개일 확률 0.9, 고양이일 확률 0.1 -> 전체 1로 표시되는 확률2. Dropout - overfitting 방지 - max pooling 이나 Fully-connected layer 뒤에 놓음#Softmax #Dropout

Activation function [내부링크]

sigmoid -> tanh -> relu1. ReLu (1) x>0 기울기 1직선 x<0 값이 0, 뉴런 죽일 수 있음 (2) Sigmoid, tanh 비교시 훨씬 학습이 빠르다 (3) 구현이 매우 간단2. Sigmoid (1) Gradient vanishing Gradient backpropagation시 미분값 소실 가능성이 크다 (2) 함수값 중심 ≠ 0 zigzag 같은 부호 = 같은 방향 update 하기 때문3. tanh(Hyperbolic tangent function) sigmoid의 변형으로 만들 수 있음 (1) 중심 = 0 sigmoid 최적화 느려지는 것 해결 (2) 미분함수 소실 가능성 여전히 있음 #ReLu #sigmoid #tanh

같은 net, 왜 다르게? [내부링크]

Q. 둘다 같은 net인데(Lenet) convolution할 때 왜 값을 다양하게 줄까?Q. 크면 클수록 메모리에 부담이 가는게 있을까?Q. 어떤게 학습이 더 잘된다는 것과 연관이 있을까?Q. 아니면 net version에 따른 차이인가, 처음과 끝만 잘 맞춰주면 되는가?1. 히든 유닛을 크게하면 메모리 올리는 양 많아짐2. 히든 유닛수가 크면 클수록 반드시 성능이 올라가진 않음3. 관습적으로 보통 3 64 128 256 늘려가며 사용4. vggnet 보면 확실히 감이 온다#convolutional_layer #input

allocate vector size, 절차지향적, core dumped [내부링크]

1. vector<int> answer(prices.size()); 하면 크기 할당 가능함, ansarr 쓸필요 없어짐2.절차지향적 언어이므로 컴파일러가 왼쪽에서 오른쪽으로 읽으므로 empty 소스 코드줄과 합치기 가능stk.back()해도 됨3.core dumped는 자료구조에서 out of range가 일어나서 발생한 것이라 생각하기https://github.com/nh9k/algorithm_problem/blob/master/my_code3/programmers/programmers_stock_price/programmers_stock_price/programmers_stock_price.cpp#vector #size #allocate #절차지향적 #core_dumped

Bigdata study-1(normalization, 유사도, (비)지도학습) [내부링크]

1. Normalization(1) min, max (2) 평균0, 분산1 (2)의 방법(가우시안 방식)을 더 선호함,수집한 데이터의 에러가 있는 경우 min, max가 많이 흔들리기 때문Ex. 168 170 172 180 -> 1.68 170 172 1800 일 경우2. 데이터끼리의 유사도 판별(1) 거리가까우면 더 유사함(2)cosine similarity(유사도)-1일 수록 유사하지 않다!(feature 별로 normalize하면 -,+부호 모두 가능해지면서 볼수있음, Text mining에서 상대적으로 그 단어가 안 나타났다)Ex. 두 데이터간 유사도 구하기(cosine similarity)3. Supervised learning(1) Supervised learningtarget variable이 pair로 주어졌을 때,-regression-classification(2) Unsupervise.......

LRN(Local Response Normalization) [내부링크]

- 현재는 많이 사용하지 않음, 대신하여 batch normalization을 사용- lateral inhibition 발생 ReLu 사용시 양수값 그대로 사용, 커널 간 영향을 줄 수 있음(Conv이나 Pooling 시 주변 픽셀에 영향을 줌)

Transfer learning [내부링크]

이미 학습된 모델을 추가된 데이터(or class)에 대해 빠르게 학습하여, 예측을 더 높이는 방법추가할 데이터 = 새롭게 훈련할 데이터Finetuning the convnet- 무작위 초기화 대신, ImageNet 데이터셋 등으로 미리 학습한 신경망으로 초기화- 학습의 나머지 과정들은 평상시와 같다ConvNet as fixed feature extractor(특정 레이어만 학습시키는 방법)- freeze the weights for all of the network(모든 신경망의 가중치를 고정) - last fully connected layer만 학습Q. 새롭게 훈련할 데이터가 적다/ 많다의 기준이 감이 오지 않아서 의문..출처2의 #Anderson Jo님께 관련 궁금증 메일을 보냈을 때,다음의 답변을 받아볼 수 있었다. 친.......

vggnet model 여러개 한 번에 학습 돌리기 - 간단한 shell script 작성법 [내부링크]

윈도우에서 git bash를 이용하여 작성하였다.우선 git 설치 완료해야만 다음 작업을 실행할 수 있다.1. .sh 파일 생성 및 작성-생성-작성vim 작성법을 토대로 작성한다.맨 위에 #!/bin/bash는 까먹지 않고 적도록 한다.for문을 돌면서 모델 이름을 차례대로 실행하는 것을 의미한다.물론 train.py 에서 다음처럼 정의해놓았다.vim 작성법을 간단하게 소개하면i : 입력입력을 모두 완료한 후에 esc -> :wq! 를 실행하여 저장후 종료하도록 한다.작성 완료 후 바탕화면에 다음 처럼 .sh 파일이 생성된 것을 볼 수 있다.2. .sh 실행train하고자하는 모델 net, train 등 함수가 작성된 py파일과 함께run_train.sh 을 colab에 추가한 후 다.......

깃허브 관련 정리(설치 + 기본 사용법 + blog ...) [내부링크]

이것만 알면 깃허브 기초 완료!!https://www.slideshare.net/ssuserf5270f/github-presentation-232189489예전에 저에게 깃허브 꿀강해준 Jason Lee님께 감사합니다.그리고 동아리 사람들한테 알려준 것 정리(꿀 강이라고 해줘서 너무 고마워) 핵심적인 부분만.0. 깃허브 설치이전 글 참고: https://blog.naver.com/kimnanhee97/221672302350설치 후 git bash나 cmd(명령 프롬프트) 실행linux 명령어를 공부하고 싶다면 bash 사용(bash에서는 windows 명령어도 되는 것으로 기억한다)windows 명령어를 공부하고 싶다면 cmd 사용1. Github 레포지토리 생성자신의 Github에서 원하는 프로젝트를 저장할 레포를 만든다.혹시 ini.......

swexpert - 다시 풀이(5) 원자 소멸 시뮬레이션 [내부링크]

1시간 5분 컷.전에 풀었던게 기억나서 쉽게 풀었음.y가 증가하는 방향이 상방향인 것으로 배열 dy 인덱스를 잘 잡기! 조심!

swexpert - 다시 풀이(6) 차량 정비소 [내부링크]

1시간 50분 컷.밤 12시경 피곤하게 풀어서 코드를 짜면서 제대로 못 푼 듯하다.초기화와, 현재 변수가(예를 들어 sum) 알고리즘 다 진행 후 어떤 상태일 지 알아야한다.전에는 정비창구에 넣을 때 priority queue와 vector를 썼었는데, 지금처럼 접수 창고를 낮은 번호부터 보게되면 따로 그럴 필요가 없어진다.

백준 - 다시 풀이(7) 낚시왕 [내부링크]

2시간 10분 컷.3시간 지난 줄 알고 답 참고하니다음 부분에서 저러한 조건 때문이었다. else if에도 temp_d가 3, 4인지를 검사해야하는데, 그렇지 않아서 틀렸다 ㅠㅠ temp_s >= (r*2)-2 그래서 아에 지워줘도 된다.규칙찾는 것이 너무 어려웠다..ㅠㅠ아래는 정답 코드

백준 - 다시 풀이(8) 인구 이동 [내부링크]

1시간 18분 컷. 이전에 짰던 소스가 어렴풋이 기억나서 비슷하게 짯으나이전 소스를 더욱 잘 만듦.numbering을 통해 index에 접근하고, 큰 index와 작은 index에 동시에 이어지면 작은 index에 큰 index 데이터를 넣고, 그 인덱스는 제거하지않고 형태만 놔둔다면,vector 인덱스가 흐트러지지 않음.이건 지금 소스 코드.

백준 - 다시 풀이(9) 아기 상어 [내부링크]

51분 컷.이전에 풀이한 알고리즘으로 풀었음.상어의 시작 나이나, map이 0인 곳은 물고기 리스트로 넣지 않는 점 등 다양한 값에서 실수하지 말기.디버깅 머리로 해보기!!

백준 - 다시 풀이(10) 치킨 배달 [내부링크]

29분 컷.전에 왜 2시간이나 걸린 문제인지 모르겠다.아마도 최대 M개를 무조건 골라야 한다는 점에서 몰라서 그랬을 것이다.

백준 - 다시 풀이(11) 사다리 조작 [내부링크]

50분 컷.1. dfs에 mi ni넣기!! m_idx나 n_idx 넣지마!!!!!!!!2. 이차원 배열을 dfs돌릴 때는 [][] 두번째 인덱스를 넘겨줄 때 한바퀴 돌면 0으로 돌려놔야 [][0]부터 돈다!!!!!!!!!

백준 - 다시 풀이(12) 2048(EASY) [내부링크]

1시간 43분 컷.이전에 1시간만에 풀었는데 오히려 늦게 풀었다.정신이 안말짱할 때 풀어서 그런거같다.(자기전 ! ㅜㅜ) - -> 다른 사람 조언을 보았다. 역시 알고리즘 문제.4 4 8 8을 합칠 때 한 번 시행 후 8 8 8 이 되어야 하는데 벡터를 그냥 쓰다보니 16 8이 되더라..이점 유의해서 line vector를 pair로 만들어서 합쳐 만들어진 것은 표시를 해주었다..

swexpert - 다시 풀이(13) 등산로 조성 [내부링크]

48분 컷.다 풀고 나서 46개에서 실패하길래 차근차근 다시 살펴보니,처음 시작 부근을 visit 안했었음.

백준 - 다시 풀이(14) 이차원 배열과 연산 [내부링크]

다음과 같은 경우 2번째 처럼 나와야 하나,0인 경우 처음에는 break 해줘서 올바른 답이 나오지 않았음. continue 해주면 됨.약 52분 컷,, ㅜㅜ

swexpert - 다시 풀이(15) 활주로 건설 [내부링크]

1시간 17분 컷.이전에 함수를 분리하지 않아서 정말 오랫동안 푼 기억이 있는데,한번에 검사한다는 생각이 아니라, 높이가 달라지면 한번 더 방문해서 검사하도록 해서소스를 내 스스로 더 알아보기 싶게 짤 수 있었다.도움이 되었다.

swexpert - 다시 풀이(16) 점심 식사시간 [내부링크]

1시간 29분 컷. 이전보다 1시간 빠르게 풀었다.dfs + 시뮬레이션 문제.다시 푸니까.시간이 -1씩 단축되어서 나온다.마지막에 +1을 해줘서 출력했지만, 왜 -1단축되었는지 고민해봤지만 잘모르겠다.더 고민해보자초기화 해주는 것 조심! 이것 때문에 정답이 모두 0이나오는 무시무시한 실수

백준 - 다시 풀이(17) 연구소3 [내부링크]

50분 컷.이전 보다 수행시간은 늘었지만, 알고리즘적으로 더 완벽한 코드.1.활성 바이러스 선택하는 dfs2.simulation-마지막에 바이러스가 남는경우-queue를 통해, 이미 퍼진 곳은 검사 x, 빈칸의 개수를 카운트해서 이미 찼으면 return time

swexpert - 다시 풀이(18) 프로세서 연결하기 [내부링크]

1시간 13분 컷.이전보다 300ms나 단축시켰다!역시 복잡할 때는 함수로 분리하는 습관이 중요하구나.계산해보니 complexity가 5^12개나 나와서 걱정했는데, 예외처리를 잘 해주어서 시간 단축에 많이 도움된 것 같다.-이제까지 연결한 core수 + 앞으로 할 core수 < 최대 core수다음의 두가지를 작성하지 않아서 시간이 걸렸다.1. wire를 visit해준 후에 dfs 돌고나서 빠져나올 때 원래대로 돌려놓아야 한다.2. max_core 갱신해주기!

swexpert - 다시 풀이(18) 줄기세포배양 [내부링크]

2시간 17분 컷.전형적인 시뮬레이션 문제로 어떻게 진행할지는 정확하게 정리 후 소스짜기!간단하게 소스를 짯지만,정해진 벡터 크기를 돌면서 erase할 경우 에러가 날 수 있다!정해진 벡터크기를 다돌고 erase를 따로 돌자.이전에서 1/4.5 정도의 실행시간으로 줄였다.

프로그래머스 - N으로 표현(DP) [내부링크]

어제 풀다가 "와.. 내가 이제까지 뭘 공부한거지?" 생각이 든 문제.그렇게 복잡한 BFS, DFS 문제를 많이 풀어놓고 이렇게 간단한 DP 문제도 제대로 못풀다니.DP와 DFS로 같이 짜보았다.emplace == insert.(emplace가 속도가 조금 느린 대신 안전한 방법이라고 알고있음.)

swexpert - 다시 풀이(1) 탈주범 검거 [내부링크]

1시간 5분 컷.L=1일 때 조심..

swexpert - 다시 풀이(2) 미생물 격리 [내부링크]

1시간 33분 컷.미생물이 3개 이상 합쳐질 때 어떻게 할지 생각나지 않아 멘붕. 돌면서 가장 큰 인덱스를 map에 저장하고 나머지는 live= false 해주는 것이 아이디어.

swexpert - 다시 풀이(3) 디저트 카페 [내부링크]

53분 컷,그런데 이전에 푼게 시간이 더 적어서 한번 확인해보기.-> c 스타일로 풀면 그렇게 됨.

swexpert - 다시 풀이(4) 보호 필름 [내부링크]

1시간 만에 풀었는데, dfs 내부에서 다시 dfs를 넘겨줄때 index를 제대로 넘겨주지 않아서 4시간 동안 풀이함..ㅠㅠ1시간 만에 작성한 풀이900ms아래는 4시간동안 변화한 풀이600ms

깃허브 - 폴더 생성 후 업로드 하기 [내부링크]

1. 깃허브에 올릴 폴더나 파일을 한 폴더에 넣어서 내 로컬저장소(git사용하던 장소)에 새로 만들어줌2. cmd 창을 키고 저번에 했던 것 이어서 작업 - add이렇게 add 해줌.3. commit달아주고 싶은 말과 함께 commit4. git status로 확인!5. 저장소 연결 후 올리기!6. 올라간 것 확인

내 깃허브 [내부링크]

https://github.com/nh9k/algorithm_problem

백준 - 아기 상어 [내부링크]

습관적으로 물고기의 vector를 만들고, 나이가 작은 순서대로 나열한 후또다시 vector를 만들어 거리가 가장 작은 것 순서대로 나열한 후, bfs를 할 생각이었다.이렇게 풀다보니, 어떻게 최소거리인 물고기한테 갈 수있지? 최소거리로 못가고 돌아가서 거리가 더 멀어지면 어쩌지?하는 생각에 풀 수 없었다.다른 사람의 아이디어를 보고 1시간만에 풀수있었다.만약 자신이 쓰려는 알고리즘이 너무 복잡하고 어떻게 풀어야 할지 모르겠다면. 알고리즘을 다시 생각해보고, 더 간단하게 생각해야한다.아이디어는.상어를 기준으로 큐에 넣고 돌면서 갈수 있는 곳을 찾고, 먹을 수 있는 물고기를 찾으면 된다.큐에 넣는 것이 중요한데, 이를 이.......

kakao - 자물쇠와 열쇠 [내부링크]

이전에 카카오 시험때 core dumped 가 걸린 문제인데,lock을 기준으로 0인덱스 - m+1부터 n까지 돌려야 key배열이 lock의 첫번째부터 끝까지 순차적으로 잘 돈다.돌지 않은 곳은 visit으로 체크하지 않은 곳이므로 다시 돌려 lock의 나머지 부분도 확인해줘야한다.확인할때 cpy_key로 확인하는 것도 잊지 않는다.

백준 - 테트로미노 [내부링크]

1시간 30분 풀이복잡도:{입력: n*msearch_map: 4*2*5*n*mmirroring: n*m + n*mrotation: n*m + n*m}search_map: 4*(2+n*m)*(5+n*m)*(n*m) = n^3*m^3500^3 ^2땡!!!!!!!!!!!!!!!!!!!!!!! 틀림 정답은search_map:4*rotation() + 4*2*mirroring() + 4*2*5*n*m

백준 - 이차원 배열과 연산 * [내부링크]

이 문제, 상반기때 인턴 지원하여 시험치러 갔을 때의 첫번째 문제와 같다.인턴이라 동일 문제를 낸 것인지, 원래 삼성이 냈던 것을 또 내는 것인지 모르겠다.푸는 데는 3시간이 걸리지 않은 것 같다.숫자를 기록할 number와, 숫자의 등장 횟수인 cnt를 기록할벡터 num_sort를 이용하여등장횟수가 오름차순이 되도록, 등장횟수가 같으면 숫자가 오름차순이 되도록 sort 해주었다.다음의 점을 주의해서 작성해야한다.소스 코드의 전체적인 구성은소스 코드는

백준 - 낚시왕 ** [내부링크]

푸는 데 이틀 정도가 걸린 것같고,알고리즘에 대한 고민을 많이 했다.다음의 문제 때문에 알고리즘의 시간 복잡도를 줄이는 데 애를 먹었다.1. 상어가 서로 먹힐 때 벡터 연산을 하면 2중 for문으로 하게된다. 만약 상어가 10000마리 이면, 10000*10000*(전체 사람이 땅을 지나가는 시간: 최대100) = 100억 = 100초가 걸린다. 이의 복잡도를 줄이기 위해 - 정렬을 하는 방법을 생각했으나, 정확한 답이 나오지 않았고, 결국 시간 초과가 났다. 즉 10000마리의 일부를 없애는 것만으로 시간 복잡도를 줄이는 데 실패했다. -> 원자소멸 시뮬레이션에서 했던 것처럼 map을 이용한다!!2번을 응용하여, 낚시왕에서는1. 상어가 움직.......

백준 - 인구 이동 ** [내부링크]

이전에 풀다가 다음의 2가지가 제대로 되지 않아 멘붕이 왔었던 문제이다.다시 풀는데는 3시간 정도 걸렸지만,처음에 실패했기에 일주일 정도 걸린 문제이다.1. 배열을 돌면서 ni==0인 곳은 가장 첫줄이라, 왼쪽만 검사하면 되고 nj ==0인 곳은 가장 왼쪽줄이라, 위쪽만 검사하면 된다. ni==0, nj==0인 곳은 가장 첫줄이며 가장 왼쪽 줄 즉 index [0][0] 이라 그저 next_ = 1을 대입한다. 검사를 하면서 위쪽과 왼쪽을 둘다 검사하는 경우에는 다음의 세가지로 나누어지는데 -왼쪽만 만족 -위쪽만 만족 -왼쪽 , 위쪽 둘다 만족 왼쪽, 위쪽만 만족할 경우에는 그저 그 visit 값만 저장하면 되지만.......

백준 - 감시 [내부링크]

약 1시간동안 풀이한 문제.쉬웠음.디버깅하면서 틀린 점을 소스 코드에 주석처리로 해놓음대부분 &&나 || 연산자의 문제였음!!! 그리고 배열에 인덱스를 논리적으로 제대로 못넣어서 생긴 문제였음!!

백준 - 미세먼지 안녕! [내부링크]

원래 푸는데 1시간 30분 정도 걸렸지만,무슨일인지 틀렸다고 해서 sum을 long long으로 바꿔보고, 배열도 long long, check 함수도 long long으로 바꿔서 고민해보다 30분이나 더 걸렸다.원래대로 int로 하니까 잘된다....뭐가 문제인거지..찾아보니 배열을 51로 수정한거 밖에 없다. 이게 왜 틀린건지 이해가 되지 않는다.

백준 - 연구소3 [내부링크]

푸는데 정답이 제대로 나오지 않아 오래걸렸던 문제이다.bfs 와 dfs에 익숙하면 함수는 금방 작성할 수 있고, 시뮬레이션의 정확한 시간을 도출하는데 어려움을 겪었다.1. 마지막에 바이러스가 남았을 때는 굳이 시간을 ++해줄 필요가 없다. 빈칸이 아니기 때문. 이것을 위해 빈칸만 개수를 계산하는 cnt와비교할 최종 개수 check_cnt를 두었다.바이러스가 퍼지는 시간을 제대로 기록하지 못해 정확한 답을 도출하지 못했고,2. 결국 예제 1의 설명의 토대로 작성하여 통과할 수 있었다.//미리 cnt++이나 visit을 해주지 않고 실제 방문하여 주변에 bfs하는 것을 하기 전 방문체크!와 cnt++!3. 그리고 아래는, 순서대로 1위치와 2위치를 돌때, 2.......

백준 - 사다리 조작 [내부링크]

이번에도 푸는 데 오래 걸렸다.시간 초과되는 문제 때문이다. 다음의 두개를 처리를 해주니 352msec로 통과하였다.1. h_idx와 n_idx로 시작점 설정해주기.사다리를 놓는 조합이기 때문에 1,3을 시행후 3,1을 시행하면 중복이기 때문에 다음과 같이 해준다.주의할점은 ni에 관한 for문을 돌고 hi 갱신후 다시 ni가 0부터 돌지 않기 때문에, 다 돌고 나서 n_idx를 0으로 갱신해준다.2. 사다리 놓은 개수 1, 2, 3을 정하고 make_line(dfs)를 도는데, 각 단계를 순서대로 시행하다가, 어느 순간 통과해서 result가 갱신되면 더 이상 진행하지 않고 전체 프로그램의 정답을 내어도 좋다.생각보다 이부분에서 시간을 더 많이 소비한다.전체 소스.......

백준 - 나무 재테크 [내부링크]

푸는 데 3~4시간 정도 걸린듯. 띄엄띄엄 풀었고 시간 측정을 안해서 잘 모르겠음.첫 번째 생각T struct 내부 나무를 리스트로 짜버리면, 할 때마다 sort를 해야한다.sort를 할시에 complexity 소모,새로 태어나는 나무는 무조건 나이가 1인점과, 이전에 심어져있는 나무는 계속 나이가 증가하므로,queue를 이용하여 짜면 쉽다. 중간에 원소를 꺼낼 필요가 없다면 queue를 가장 먼저 생각해보자.!두 번째 생각queue로 했을 때 왜 안되서 deque으로 바꿨는지 기억이 안난다. 어째든 제약사항이 있었고,deque으로 하기로 하고 소스를 다시 짯다.덱에서 이터레이터가 안되는 줄알고 양분 섭취하여 나이+1해줄 때도 push, pop했었는데,알고 보니 1. .......

백준 - 연구소 [내부링크]

연구소3을 풀어봤다면 엄청 금방 풀 수 있는 문제!1시간 30분 컷..ㅠ주의할 점: dfs 돌릴 때, m_idx를 인덱스로 전달하고한바퀴돌면 m_idx = 0 해줘야 다시 0부터 돈다는 점!

깃 - 깃허브: 시작 [내부링크]

1. 깃 설치https://shxrecord.tistory.com/115설치 후 cmd에서 git -version을 통해 확인2. 깃허브와 연동https://homeproject.tistory.com/9성공!!