전체 글
-
백준 2513번 : 통학버스 (C++)알고리즘/BOJ 2021. 12. 6. 19:39
문제: https://www.acmicpc.net/problem/2513 2513번: 통학버스 첫째 줄에는 세 개의 양의 정수 N, K, S가 빈칸을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 아파트 단지의 수이며 2 ≤ N ≤ 30,000이다. 두 번째 정수 K는 1 ≤ K ≤ 2,000이며, 통학버스의 정원 www.acmicpc.net 수용 한계량이 있는 통학버스가 존재할 때, 모든 학생을 태울 수 있는 최소거리를 찾는 문제입니다. 생각을 해보면 모든 학생을 태워야 하므로 멀리 있는 학생 위치도 결국엔 한 번 이상은 지나야 합니다. 그래서 멀리 있는 학생들부터 태워서 오는 길에 수용량이 남으면 태우는 방법으로 하면 최소거리를 구할 수 있는 그리디 문제입니다. 통학버스의 시작 위치를 s라 하면..
-
논문리뷰 A Study of BFLOAT16 for Deep Learning TrainingStudy/ML 2021. 8. 30. 22:16
Abstraction & Introduction 이 논문은 19년도에 발표된 논문으로 딥러닝 half precision 기법에서 INT16, FP16 대신 Bfloat16을 제안합니다. Bfloat16란 16bit floating 숫자로 아래 사진에 나와있듯이 FP32와 지수 부분 비트수가 같다는 특징이 있습니다. 그래서 FP32보다는 정확도는 떨어지지만 표현할수 있는 범위가 같다는 특징이 있습니다. 원래 BFloat16는 구글의 DistBelief 머신러닝 프레임워크에서 처음 제안됬습니다. 멀티 node 환경에서 shared memory의 volume을 줄이기 위해 제안된 데이터 타입으로 지금은 이제 딥러닝의 computing에 있어서 사용됩니다. f Eng 1.f [약어] 여성(female) 2.f1..
-
논문 리뷰 DoReFa-Net : CNN 모델에서 weight, activation, gradient의 quantizationStudy/ML 2021. 8. 4. 17:59
DoReFa-Net TRAINING LOW BITWIDTH CONVOLUTIONAL NEURAL NETWORKS WITH LOW BITWIDTH GRADIENTS https://arxiv.org/abs/1606.06160 DoReFa-Net: Training Low Bitwidth Convolutional Neural Networks with Low Bitwidth Gradients We propose DoReFa-Net, a method to train convolutional neural networks that have low bitwidth weights and activations using low bitwidth parameter gradients. In particular, during ba..
-
[Design Pattern] Template Method Pattern 템플릿 메소드 패턴Study/Design Pattern 2021. 7. 31. 21:39
템플릿 메소드 패턴이란 비지니스 로직은 세부 구현으로 부터 분리하는 디자인 패턴으로 GOF에 따르면 다음과 같다. 즉 간단하게 말하자면 여러 클래스에서 공통된 행위를 상위 클래스에서 정의하고, 하위 클래스에서 각각의 상세부분을 구현하는 것을 말한다. 더보기 알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴이다. 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른형태로 사용이 필요한 경우 유용한 패턴이다. – GoF Design Patterns 만약 다음과 같이 Gun이라는 추상클래스가 존재하고 shoot이라는 메소드를 가진다고 가정하자. shoot은 3가지 단계로 이루어진것을 확인할 수 있다. 하지만 각 단계의 구현은..
-
[Design Pattern] Observer Pattern 옵저버 패턴Study/Design Pattern 2021. 7. 28. 19:10
여러 객체를 구현하면 객체끼리 의존 관계를 가지기도 합니다. 예를 들어 '오늘의 메뉴'라는 객체가 있고 학생들 객체가 있으면, 오늘의 메뉴 객체의 내용에 따라 학생들이 먹는 음식 또한 달라질 것입니다. 이처럼 의존성을 가지는 다른 객체들에게 변경 상황을 알릴 필요가 있는데 이때 사용되는 디자인 패턴이 옵저버 패턴입니다. 옵저버 패턴은 객체 사이에 일 대 다의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 갱신될 수 있게 만듭니다. class TodayMenu { public String meal; public String soup; public String sideDish1; public String sideDish2; } pu..
-
[Design Pattern] Builder Pattern 빌더 패턴Study/Design Pattern 2021. 7. 22. 01:23
public class Person{ private final String name; private final int age; private final String country; private final String gender; } 빌더 패턴은 객체를 생성하는 패턴으로 팩토리 패턴과는 또 다른 디자인 패턴입니다. 만약 위와 같은 Person이라는 클래스를 가정해보겠습니다. 만약 이 클래스를 생성자로 직접 생성한다면 다음과 같은 문제점이 발생할 수 있습니다. 1. 클라이언트에서 생성자로 파라미터를 넘겨줄 때, 파라미터 수가 많으면 타입, 순서 관리가 어려워지고 가독성이 떨어집니다. 만약 Person의 멤버 변수가 위와 같이 4개가 아닌 10개, 20개처럼 많으면 아래 코드처럼 생성자의 파라미터 부분이 ..
-
[Design Pattern] Strategy Pattern 전략 패턴Study/Design Pattern 2021. 7. 18. 18:36
client [ˈklaɪənt] Eng 1.client [명사] (전문가의 서비스를 받는) 의뢰인[고객] 2.Client (호텔) 고객을 말한다. 3.client state [명사] 의존국(더 큰 강대국의 지원과 보호에 기대는 나라) 4.client-server [형용사] (명사 앞에만 씀) (컴퓨터) 컴퓨터 시스템이 클라이언트 서버형인(중앙의 서버로 연결된 여러 대의 컴퓨터가 데이터를 공유하는 시스템인) 참조 peer-to-peer 5.mail client (컴퓨터) 이메일 고객 ((이메일 송수신 서비스를 받는 컴퓨터)) 6.고객 顧客 (상점 등의) customer; (호텔 등의) guest; (단골 ) (formal) patron; (변호사·은행 등의) client; (집합적) clientele 7...
-
[Design Pattern] Adapter Pattern 어댑터 패턴Study/Design Pattern 2021. 7. 18. 01:15
어댑터 패턴이란 어떤 인터페이스를 상속받는 클래스를 다른 인터페이스로 변환하여 사용하고자 할 때 사용되는 디자인 패턴이다. 이를 통해 관계가 없는 인터페이스들을 같이 사용 가능하고, 클래스의 재활용성이 증가하는 장점이 있다. // Human 인터페이스 public interface Human{ public void talk(); public void walk(); } // 구현 class public class Asian implements Human{ @Override public void talk(){ System.out.println("I am an Asian"); } public void walk(){ System.out.println("Asian walks"); } } // Dog 인터페이스 p..