본문 바로가기

TIL/Algorithm

(63)
암호화 Algorithm 회사에서 소스 분석 발표를 진행하게 되었는데, PPT를 준비하다 보니 암호화에 대해 관심이 생겨 포스팅하려 한다 위 테이블에 나와 있는 것처럼 암호화는 크게 Aes, Sha, Rsa 3가지 방식으로 나뉜다 Aes와 Rsa는 양방향 암호화 방식으로 Data를 암호화시킬 수 있고, 반대로 복호화도 가능한 알고리즘이다 Sha 암호화 방식은 단 방향 암호화 방식이기 때문에 복호화는 불가능하고 단순 로그인 시 비밀번호가 맞는지만 true/false로 체크해주는 방식이다 단 방향 암호화는 복호화가 안되기 때문에 개인정보나 중요한 정보들을 제삼자가 복호화시켜 볼 수 없게 할 수 있다 분석한 소스에서는 Aes 알고리즘을 사용하였다 사용자들이 캠페인을 신청하고 후에 자신이 입력했던 정보들을 다시 보고 싶을 때 확인하는 ..
Java 백준 2751번 문제 - 수 정렬하기2 수 정렬하기 2 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 256 MB 151169 40963 27924 29.985% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 5 5 4 3 2 1 예제 출력 1 1 2 3 4 5 2750번 문제인 수 정렬하기 문제와 많이 비슷한데, 차이점이라면 데이터도 이전 문제에 비해 1000배 많아졌고, 수의 범위도 1000배..
Java 백준 2750번 문제 - 수 정렬하기 수 정렬하기 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 101115 57445 39680 58.273% 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 5 5 2 3 4 1 예제 출력 1 1 2 3 4 5 BufferedReader를 이용해서 입력값을 받아들인다 숫자는 중복되지 않기 때문에 ArrayList를 사용하였다 입력값의 맨 처음 값이 총숫자의 개수이기..
Java 백준 7568번 문제 - 덩치 덩치 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 45749 25957 22236 57.364% 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"라고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165)라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 ..
Java 백준 2231번 문제 - 분해합 분해합 성공 다국어 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 192 MB 64446 29833 23611 46.517% 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자릿수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다...
Java 백준 10870번 문제 - 피보나치 수열 피보나치 수 5 성공 시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 44543 28214 24625 64.124% 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그다음 2번째부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다. 출력..
Java 백준 10872번 문제 - 팩토리얼 팩토리얼 성공 시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 80434 39653 33290 49.840% 문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N! 을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다. 출력 첫째 줄에 N!을 출력한다. 예제 입력 1 10 예제 출력 1 3628800 BufferedReader로 입력값을 받는다 int형 타입 N 변수에 입력값을 담고 int형 타입 sum 변수에 누적 값을 담는다 이때, factorial(N) 메서드를 실행시켜서 누적한다 factorial 메서드는 숫자 a를 매개변수로 받고 If조건문으로 a가 1이하 일 때는 1을 리턴하고 다른 것은 재귀로 계속해서 리턴해준다 6 * fa..
Java 백준 3053번 문제 - 택시 기하학 택시 기하학 성공 스페셜 저지 출처 다국어 한국어 시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 32265 14046 12267 43.239% 문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1, y1), T2(x2, y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1, T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원..