보호되어 있는 글입니다.
코딩 테스트는 문제 풀이 능력을 확인하는 시험이다. 따라서 문제를 풀 때는 전체 시간의 50% 정도는 문제 분석에 시간을 쓰는 게 좋다. 이유는 오히려 설계를 하지 않고 들어갈 경우, 코드가 꼬이고 어차피 다시 쓰는 경우가 생긴다. 이는 실무에서도 마찬가지이다. 스파게티 코드가 될 경우가 많다. 필자의 생각에는 이게 바로 코딩테스트를 보는 이유라 여긴다. 다음은 코딩 테스트의 기본적인 순서이다. 1. 문제를 쪼개서 분석 문제를 분석 할 때 문제를 어떤 순서로 풀 수 있을지 고민해보아야 한다. 한번에 문제를 풀지 말고, 어떤 행동이 선행되어야 뒤에 값을 구할 수 있는지를 생각해보자. 역으로 생각하면 문제 풀이가 더욱 쉬워진다. 2. 제약 사항 파악 및 반례 찾기 보통 문제를 풀 떄는 테스트 케이스가 적어서..
힙은 특정한 규칙을 가지는 트리이다. 규칙에 따라 최대힙, 최소힙으로 나뉘며, 최대 힙은 부모 노드가 자식 노드보다 크고, 최소 힙은 부모 노드가 자식 노드보다 작다. 최대힙이나 최소힙을 구축하기 위해서는 규칙만 다르고 모두 동일하다. 무작위 배열에서의 최대 힙은 max.heapify(n) 연산을 통해 생성되는데, 과정은 아래와 같다. 1. 현재 노드와 자식 노드의 값을 비교한다. 2. 현재 노드의 값이 가장 크지 않으면 자식 노드 중 가장 큰 값과 현재 노드의 값을 바꾼다. 3. 만약 자식 노드가 없거나 현재 노드의 값이 가장 크면 연산 종료. 4. 맞바꾼 자식 노드의 위치를 현재 노드로 하여 1~3을 반복. 계속해서 맞바꿔가면 되기에 이론은 생각보다 쉽다. 참고로 max.heapifiy(n)에서 n은..
다익스트라 알고리즘은 하나의 정점에서 다른 정점으로 갈 때, 최단 경로를 알려주는 알고리즘이다. 여러개의 정점이 존재하는 그래프에서, 간선에 다음 노드로 가는 거리가 표시된다. 그 이후, 각 상황마다 갈 수 있는 짧은 경로를 선택한 뒤, 전에 있던 경로와 비교 갱신하여 최단 거리를 찾는다. 정확한 순서는 다음과 같다. 1. 출발 노드 설정 2. 출발 노드를 기준으로 각 노드의 최소 비용을 저장(위에서는 P와 U. 나머지는 inf 처리하는데 그냥 충분히 높은 값을 주면 된다.) 3. 방문하지 않은 노드 중에서 가장 비용이 적은 노드를 선택(여기서는 P) 4. 해당 노드를 거쳐서 특정한 노드로 가는 경우를 고려하여 최소 비용을 갱신(즉, P에서는 X,Q로 갈 수 있는데 X로 가는 방식이 3+1과 2+4가 있..
2024.02.05 - [프로그래밍 공부/ML 및 DL 관련 이론] - [논문] 임베디드에서의 float32와 float 16, 그리고 int8 비교(양자화) [논문] 임베디드에서의 float32와 float 16, 그리고 int8 비교(양자화) https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11522634&language=ko_KR&hasTopBanner=true https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11132879 임베디드에 CNN 같은 모델이 적용되기 위해서는 양자화나 가지치기( sikaro.tistory.com 지난 시간의 논문 리뷰에서 양자화에 대해 설명했었다. 이때 Loss ..
https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11522634&language=ko_KR&hasTopBanner=true https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11132879 임베디드에 CNN 같은 모델이 적용되기 위해서는 양자화나 가지치기(드롭아웃)이 선행되어야 한다. 요즘에는 일반적으로 경량화가 되어 있는 모델들도 많아 스마트폰에서도 사용이 가능하지만, GPU가 없는 임베디드에서는 무리인 가능성이 없지 않다. 여기서 양자화는 float32 기반으로 스탄다드하게 훈련된 모델을, 타입 변환을 통해 용량을 줄이는 행위를 말한다. 그만큼 인식률이 떨어지는데, 두 논문은 얼마나 그 인식률이 ..