Java(160)
-
[Java] 인증번호 생성 방법
1. 문제 프로젝트에서 이메일 인증을 통해 회원가입을 수행하도록 하는 요구사항이 발생했다. 이때 6자리 숫자를 입력하는 방법으로 인증을 하도록 했는데 이 방법에 대해서 찾아본 내용들을 정리한다. 2. 인증번호 생성 방법 자바에서 인증번호를 생성하는 방법은 여러 가지가 존재한다. Random ThreadLocalRandom SecureRandom 이 중에서 세 번째인 SecureRandom을 사용하도록 한다. 3. Random 탈락 이유 Java에서는 난수를 제공하는 방법으로 Random 패키지를 제공한다. 하지만 암호학적으로 안전하지 않다. 이는 공식 문서에 언급되어 있다. 💡 Instances of `java.util.Random` are not cryptographically secure. Consi..
2023.03.28 -
[Baekjoon] 1806번: 부분합
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 설명 10,000 이하 자연수로 이루어진 길이 N의 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중 가장 짧은 것의 길이를 구하는 프로그램을 작성해야 한다. 만약 합이 없다면 0을 출력한다. 풀이 방법 - 투 포인터 이 문제는 투 포인터를 활용하여 해결할 수 있다. 예제 입력을 가지고 과정을 살펴보자. N = 수열의 길이이다. S = 비..
2023.03.28 -
[Baekjoon] 6198번: 옥상 정원 꾸미기
https://www.acmicpc.net/problem/6198 6198번: 옥상 정원 꾸미기 문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으 www.acmicpc.net 문제 설명 빌딩 관리인들은 다른 빌딩의 옥상을 벤치마크하고 싶어 한다. 그래서 자기 빌딩보다 낮은 빌딩들의 옥상 정원을 보며 본인 소유의 빌딩 옥상 정원에 대한 고민을 한다. 모든 빌딩은 일렬로 서 있고 오른쪽으로만 볼 수 있다. 그리고 본인 소유 빌딩과 높이가 같거나 큰 경우엔 옥상을 볼 수 없다. 1번 관리인은 2, 3, 4 번 빌딩의 옥상을 볼 수 있다. 2번 관리인은 다른 빌딩의 옥..
2023.03.27 -
[Baekjoon] 2559번: 수열
https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 문제 설명 정수 배열이 주어졌을 때, 연속적인 합이 가장 큰 값을 출력해야 한다. 연속되는 범위가 2인 경우는 다음과 같다. 이 경우 최댓값은 21이 된다. 연속되는 범위가 5인 경우는 다음과 같다. 이 경우 최댓값은 31이 된다. 풀이 방법 포인터 변수를 활용하여 해결할 수 있다. 범위가 5인 경우를 예로 들면 과정은 다음과 같다. MAX: 최댓값을 저장해놓기 위한 변수이다. sum..
2023.03.26 -
[Baekjoon] 11728번: 배열 합치기
https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 문제 설명 정렬된 두 배열이 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하면 된다. 풀이 방법 투 포인터 기초 문제이다. 예제 입력 3을 그림을 통해 보자. 이해를 돕기 위해 A 배열에 10을 추가했다. A: 첫 번째로 주어진 배열이다. B: 두 번째로 주어진 배열이다. ans: 출력할 정답을 저장해놓는 배열이다. 첫째 줄에 입력받은 N과 ..
2023.03.26 -
[Baekjoon] 2003번: 수들의 합 2
https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 문제 설명 N개의 수로 된 수열이 주어진다. 이 수열의 i번째 수부터 j번째 수까지의 합이 M이 되는 경우의 수를 구하는 프로그램을 작성해야 한다. 예제 2로 설명하면 다음과 같다. 인덱스가 0인 1부터 시작해보자. i = 0 1부터 순서대로 더해나간다. 그러다 1 + 2 + 3 = 6이므로 이 경우는 안 된다. i = 1 2부터 순서대로 더해나간다. 그러..
2023.03.24