본문 바로가기

전체 글57

[Algorithm] 소수 구하기 ✔ 에라토스테네스의 체 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. ✔ 알고리즘 에라토스테네스의 체 방식은 위와 같이 2부터 시작해 해당 배수의 값을 지워 나가면 된다. 에라토스테네스의 시간 복잡도는 O(nloglogn) 이다. 사실 O(nloglogn)이 어느 정도인지 모르겠다... 다만, O(n)인 선형 알고리즘보다 빠르다고 생각하고 있다. 배수의 값을 미리 지우기 때문이라고 생각한다.(DP 느낌? 👀) #include #include using namespace std; int main() { int n=120, cnt=0; vector v(n+1, 1); for(int i=2; i*i 2022. 4. 5.
[Algorithm] 알고리즘 읽기와 분석(시간복잡도) ·코딩 테스트를 준비하면서 지금까지 알고리즘 문제를 풀 때 시간 복잡도/공간 복잡도 등에 대해서는 생각을 안 하고, 문제를 읽고 해당 문제의 조건으로 구현해서 제출하고 맞으면 다른 사람의 풀이 보고 넘어가고 틀리면 "왜 틀렸지?"라고 막연히 생각만 했었다. 그러다 좋은 강의로 인해 시간복잡도 등 분석에 대해서 알게 되어서 기록 및 공유하고자 한다. 먼저 시간 복잡도에 대해서 간단히 얘기하면, 시간 복잡도는 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가리킨다. 시간 복잡도는 주로 빅-오 표기법을 사용하여 나타내며, 빅-오 표기법은 계수와 낮은 차수의 항을 제외시키는 방법이다. $$ O(N!) > O(2^N) > O(N^2) > O(NlogN) > O(N) > O(\sqrt{N}) > O(logN).. 2022. 3. 16.
JPA @MappedSuperclass @MappedSuperclass엔티티를 구현하다 보면 보통 공통적으로 사용하는 속성들이 존재한다.가장 많이 나오는 게 등록일, 수정일, 등록자, 수정자 등이 이에 해당한다.이렇듯 공통 매핑 정보를 부모 클래스에서 상속받아 사용할 때 쓰인다.부모 클래스는 테이블과 매핑하지 않고 자식 클래스에게 매핑 정보만 제공하는 것이다.(자식 클래스에서는 상속한 필드들도 칼럼으로 인식한다)@MappedSuperclass를 선언한 클래스는 엔티티가 아니다.그리고 직접 생성해서 사용할 일이 없으므로 추상 클래스(abstract)로 만드는 것을 권장한다. 2022. 3. 7.
JWT Token(JSON Web Token) JSON 웹 토큰 JSON 웹 토큰(JSON Web Token, JWT)은 클레임(사용자 정보)을 안전하게 표현하기 위한 인터넷 표준(RFC 7519)이다. JWT 구조 헤 더 { "alg" : "HS256", "typ" : "JWT" } 서명 생성을 위해 어떤 알고리즘을 사용할지 식별한다. 토큰의 타입을 지정한다. 페 이 로 드 { "loggedInAs" : "admin", "iat" : 1422779638 } iss (Issuer)- 발급자 sub (Subject)- 주제 aud (Audience)- 대상 exp (Expiration Time)- 만료 시간 nbf (Not Before)- 활성 날짜 iat (Issued Time)- 발급 시간 jti (JWT ID)- 고유 식별자 다음 예는 표준 Is.. 2022. 3. 7.
JUnit @Before & @After @Before 애노테이션을 지금까지 테스트 실행 전 실행이 된다는 것 정도만 알고 있었는데,박재성 님의 책을 통해 좋은 내용을 알게 되었다.JUnit을 사용할 때 인스턴스 생성을 위해 @Before 애노테이션을 활용한다.@Before 애노테이션을 사용하지 않고 필드(field)로 구현하는 방법도 단위 테스트는 성공한다.각 단위 테스트를 실행할 때마다 인스턴스를 생성하는 것은 똑같기 때문이다.위와 같이 작성해도 테스트는 성공한다.하지만, JUnit은 초기화 작업을 위와 같이 구현하는 것을 추천하지 않는다.인스턴스를 매 테스트마다 생성하는 이유는 테스트 메서드를 실행할 때 인스턴스의 상태 값이 변경되어 다음 테스트 메서드를 실행할 때 영향을 미칠 수 있기 때문이다. 이와 같이 테스트 실행 순서나 인스턴스 상.. 2022. 3. 7.
Github 패스워드 변경 Github 패스워드 변경 방법 이 글에서 패스워드는 Github에서 사용하는 계정의 패스워드를 의미하지 않는다. Github는 ID/PW기반의 Basic Authentication 인증을 더 이상 사용하지 않고, ID/Personal Access Token 방식의 Token Authentication 인증을 사용한다고 한다. 그래서 git push/pull 등 사용하려고 하면 에러가 발생한다. 그리고 Username, Password를 입력하라고 하는데 Password에 Github에서 발급한 Token의 값을 입력하면 된다. 이 글은 Personal Access Token 발급에 대한 글이 아니다. 이 글은 Personal Access Token 값을 변경하거나 다른 계정으로 변경하면서 Usernam.. 2022. 3. 7.