분류 전체보기

BOJ

[ 백준 1676 ] - 팩토리얼 0의 개수 (Java)

1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 이해 & 기본 개념 팩토리얼의 결과 값에서 끝에 0의 개수를 구하는 문제 N이 최대 500까지 들어오므로 팩토리얼을 직접 계산하는 방법은 불가 BigInteger를 사용하면 가능하긴 하겠지만, 좋은 방법은 아닌 듯함 중요 포인트 팩토리얼을 계산하지 않고 0의 개수를 알아내는 방법을 찾는게 중요 어떤 경우에 끝에 0이 붙는지를 생각해보면 쉽게 규칙을 찾을 수 있다. 최종 풀이 끝자리에 0이 붙는 경우는 10(2 x 5)을 만났을 때이다. 2와 5가 곱해지는 순간 10이 되어 끝자리에 0이 생기게 된다. 즉, 2x5가 몇 번 나오는지만 알면 0이..

안드로이드/Hilt

[ Android Hilt ] Hilt 라이브러리 (2) - Dagger 어노테이션 정리

Hilt에 대한 자료들을 보다 보면 Dagger2에 대한 내용이 많이 나온다. 아무래도 Hilt가 Dagger2를 개선한 라이브러리다 보니 어쩔 수 없는 것 같고, 그래서 Dagger2에서 주로 사용되는 어노테이션에 대해서 정리하고자 한다. Dagger2 어노테이션 @Module, @Provide @Module은 클래스에만 선언 가능 @Provide는 반드시 @Module 클래스 안에 선언된 메소드에만 선언 가능 Module 클래스 Module 클래스는 의존성 주입에 필요한 객체들을 Provide 메소드를 통해 관리 일반적으로 Module 클래스는 클래스 이름 뒤에 Module을 붙임 Provide 메소드 객체를 제공해 줄 메소드 일반적으로 Provide 메소드명 앞에는 provide를 붙임 @Modul..

BOJ

[ 백준 16964 ] - DFS 스페셜 저지(Java)

16964번: DFS 스페셜 저지 첫째 줄에 정점의 수 N(2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에는 트리의 간선 정보가 주어진다. 마지막 줄에는 DFS 방문 순서가 주어진다. DFS 방문 순서는 항상 N개의 정수로 이루 www.acmicpc.net 문제 이해 & 기본 개념 그래프와 방문 순서가 주어진다. 해당 그래프에서 입력받은 순서가 dfs로 방문 가능한지를 체크하는 문제 해당 문제는 방문 순서에 대한 기준을 두지 않았다. 즉, 어떤 순서로 방문을 해도 dfs로 방문 가능한 순서이기만 하면 된다. 중요 포인트 n이 10만까지 들어오므로, dfs를 완전히 수행하면 시간 초과 dfs로 접근하되, 수행 시간을 줄여아한다. 최종 풀이 dfs의 경우 여러 자식들 중 어떤 자식을 ..

안드로이드/Hilt

[ Android Hilt ] Hilt 라이브러리 (1) - Dagger 기본 개념

안드로이드 DI 라이브러리 중 하나인 Hilt를 적용하기 위해 Hilt에 대해 정리해보려고 한다. Hilt는 Dagger 라이브러리를 개선한 버전이므로 먼저 Dagger를 알아야 할 것 같아서 Dagger부터 간단하게 정리해보려고 한다. Dagger 기본 개념 Inject Component Subcomponent Module Scope Inject 의존성 주입을 요청 @Inject 어노테이션으로 주입을 요청하면, 연결된 Componenet가 Module을 통해 객체를 생성하여 주입 Component 의존성을 요청받고 주입하는 Dagger의 주된 역할을 수행 연결된 Module을 이용하여 의존성 객체를 생성하고, @Inject로 요청받은 인스턴스에 생성한 객체를 주입 SubComponent Componen..

Secure Coding/SQL Injection

[ Secure Coding ] SQL Injection (SQL 인젝션) PreparedStatement, Statement- Java (2)

2023.01.31 - [Secure Coding/SQL Injection] - [ Secure Coding ] SQL Injection (SQL 인젝션) - Java [ Secure Coding ] SQL Injection (SQL 인젝션) - Java SQL Injection SQL Injection은 입력 값에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 파라미터에 쿼리문을 조작하여 정보를 열람하거나 데이터를 조작할 수 있는 해킹 기술이다. SQL Injecti dongx2.tistory.com 이전 글에서 SQL Injection에 대해서 포스팅 했었는데, 이번 글에선 PreparetStatement와 Statement의 차이점과 실제 예시들을 다루고자한다. PreparedState..

Secure Coding/SQL Injection

[ Secure Coding ] SQL Injection (SQL 인젝션) - Java

SQL Injection SQL Injection은 입력 값에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 파라미터에 쿼리문을 조작하여 정보를 열람하거나 데이터를 조작할 수 있는 해킹 기술이다. SQL Injection 예시 1. 안전하지 않은 코드 예시 코드를 보면 외부 입력(gubun)을 아무런 검증 없이 바로 쿼리문에 집어넣고 있다. 이때, 외부 입력(gubun)이 ' OR '1'='1 과 같이 들어오게 된다면, 전체 쿼리문은 아래와 같이 만들어진다. "SELECT * FROM board WHERE b_gubun = '' OR '1' = '1'"; 개발자가 어떤 조건을 걸어놨던 간에 OR '1' = '1'이라는 구문이 추가되어 항상 참이 되는 SQL문이 탄생한다. 실행 결과 위와 같은..

안드로이드/이론

[ 안드로이드 ] 해상도 대응, 다양한 화면 크기 지원

졸업 작품을 진행하기 전 여러가지 이론이나 기술 스택들에 대해 정확히 이해하고 있어야할 것 같았다. 이번 졸업 작품은 UI/UX적으로도 꽤 신경쓰고 있기 때문에 가장 먼저 해상도 대응 방법에 대해서 정리를 해야할 것 같았다. 해당 포스트에서는 안드로이드 공식 문서에서 제공하는 해상도 대응 방법에 대해서 정리 해보고자한다. 유연한 레이아웃 만들기 먼저 다양한 기기에 대응하기 위해서는 작은 변화에도 반응하는 유연한 레이아웃을 만들어야한다. 그 방법들은 아래와 같다. 1. ConstraintLayout 사용하기 공식 문서에서 가장 먼저 제안하는 방법은 ConstraintLayout을 기본 레이아웃으로 사용하는 것이다. ConstraintLayout 특성상 절대 위치가 아닌 상대 위치(뷰끼리의 공간적 관계)를 ..

BOJ

[ 백준 14929 ] 귀찮아(SIB) (Kotlin)

14929번: 귀찮아 (SIB) n과 xi가 주어짇나. n은 10만 이하ㅇ고, xi는 젗ㄹ댓값이 100이하인 정수디이다. www.acmicpc.net 문제 이해 각각의 두 원소끼리 곱한 합을 구하는 문제 즉, n=3이고 x1, x2, x3가 있으면 x1x2 + x1x3 + x2x3를 구하라는 문제이다. 해당 문제에선 규칙을 찾는게 중요 + 누적 합으로 계산 최적화 풀이 n=4일 때를 가정하면 아래와 같은 식을 얻을 수 있다. ex) n=4 { x1 x2 x3 x4 } x1x2 + x1x3 + x1x4 + x2x3 + x2x4 + x3x4 => x1(x2+x3+x4) + x2(x3+x4) + x3(x4) 규칙을 보면 x1부터 차례대로 자신을 제외한 다른 원소들의 합과 곱해지는 것을 볼 수 있다. 공통 인수..

dongx._.2
'분류 전체보기' 카테고리의 글 목록 (9 Page)