분류 전체보기 114

데이터 암호화

BCrypt 알고리즘 1. 개요 블로피시 암호에 기반을 둔 암호화 단방향 해시 알고리즘으로서 복호화가 불가능하다. Bcrypt의 검증은 암호화된 값이 가지고 있는 알고리즘, Cost Factor, Salt를 이용하며, 암호화된 값과의 비교를 통해 검증을 진행한다. 시간이 지남에 따라 속도 저하를 위해 반복 횟수 증가가 수반될 수 있으므로, 연산 파워의 증가에도 브루트 포스 검색 공격에 대한 저항을 유지하게 된다. 2. 적용 서비스 회원가입/로그인/회원정보 수집 : 비밀번호 암호화 3. 적용 서비스 적용 개요 1. 회원 가입 genSlat()메소드를 통해 솔트를 생성한다. (솔트는 해시함수에서 암호화된 비밀번호를 생성할 때 추가되는 바이트 단위의 임의의 문자열이다.) hashpw(password, salt..

웹프로젝트 2023.04.17

양궁대회(프로그래머스, 자바)

https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 지거나 비기는 경우는 -1리턴 2. 점수의 차가 같은 경우가 여러 경우 있다면 => 마지막 인덱스부터 차례대로 비교하면서, lPoint 배열값이 후보 배열값보다 크면 break class Solution { static int[] lPoint; //라이언의 화살 목록 static int diff=0; public static void main(String[] args) { //int info..

코테 공부 2023.04.12

[구현] 미생물 격리(SWEA 2382, 자바)☆☆

문제 정사각형 구역 안에 K개의 미생물 군집이 있다. 이 구역은 N*N 크기의 동일한 정사각형 셀들로 이루어져 있고, 가장 바깥쪽 가장장리의 셀에는 특수한 약품이 칠해져 있다. 1. 각 군집은 1시간 마다 이동방향에 있는 다음 셀로 이동한다 2. 약품이 칠해진 셀에 도착하면 군집 내 미생물 절반이 죽고, 이동방향이 반대로 바뀐다. (미생물 수를 2로 나눈 후, 소숫점 이하를 버림한 값) 입력 테스트 케이스 개수 한 변의 셀의 개수 N, 격리 시간 M, 미생물 군집의 개수 K K줄에 걸쳐 군집의 정보 출력 M시간 후 남아있는 미생물 수의 총 합 구현 1. 미생물 군집의 위치 좌표, 방향, 미생물 수, 위치하는 칸의 번호 를 Cluster 클래스로 만들고, 이들 객체를 리스트에 저장 2. Cluster 클래..

코테 공부 2023.04.08

[DP] 로봇 조종하기

https://www.acmicpc.net/problem/2169 2169번: 로봇 조종하기 첫째 줄에 N, M(1≤N, M≤1,000)이 주어진다. 다음 N개의 줄에는 M개의 수로 배열이 주어진다. 배열의 각 수는 절댓값이 100을 넘지 않는 정수이다. 이 값은 그 지역의 가치를 나타낸다. www.acmicpc.net 1. dp값 음수로 초기화 2. dp[ x ] [ y ] [ 0: 위 / 1: 왼 / 2: 오른 ] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public cla..

코테 공부 2023.04.06

[DP] 보행자 천국(프로그래머스)

https://school.programmers.co.kr/learn/courses/30/lessons/1832?language=java# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. DP값을 갱신할 때마다 %MOD 해주기 2. dp[ ][ ][ 0: 오른쪽 / 1: 아래쪽 ] import java.util.*; //프로그래머스 public class Solution_보행자천국{ static int MOD = 20170805; static int[] dx={0,1}; //[0]은 오른쪽, [1]: 아래 static int[] dy={1,0}; st..

코테 공부 2023.04.06

[DP] 가장 긴 바이토닉 부분 수열(백준 11054번, 자바)

https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net [ 이분 탐색 활용하여 풀이 ] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main_11054_가장긴바이토닉부분수열 { ..

코테 공부 2023.04.06

[Sliding Window] 회전 초밥(백준 15961번, 자바)

https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net 문제 벨트의 임의의 한 위치부터 k개의 접시를 연속해서 먹을 경우 할인된 정액 가격으로 제공한다. 각 고객에게 초밥의 종류 하나가 쓰인 쿠폰을 발행하고, 1번 행사에 참가할 경우 이 쿠폰에 적혀진 종류의 초밥 하나를 추가로 무료로 제공한다. 만약 이 번호에 적혀진 초밥이 현재 벨트 위에 없을 경우, 요리사가 새로 만들어 손님에게 제공한다. 입력 회전 초..

코테 공부 2023.04.06

[KMP] 찾기(백준 1786번, 자바)

https://www.acmicpc.net/problem/1786 1786번: 찾기 첫째 줄에, T 중간에 P가 몇 번 나타나는지를 나타내는 음이 아닌 정수를 출력한다. 둘째 줄에는 P가 나타나는 위치를 차례대로 공백으로 구분해 출력한다. 예컨대, T의 i~i+m-1번 문자와 P의 1~m www.acmicpc.net KMP 알고리즘 - 불일치가 발생한 텍스트 문자열의 앞 부분에 어떤 문자가 있는지를 미리 알고 있으므로, 불일치가 발생한 앞 부분에 대하여 다시 비교하지 않고 매칭을 수행 - 시간 복잡도: O(M+N) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class M..

코테 공부 2023.04.04

[LIS] 가장 긴 바이토닉 부분 수열 (백준 11054번, 자바)☆☆☆

https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 1. 이분 탐색을 활용 2. 증가하는 부분 수열과 감소하는 부분 수열을 모두 구하고, 그 중 최대 길이를 추출한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTo..

코테 공부 2023.04.03

[BFS/비트마스킹]달이차오른다, 가자(백준 1194번, 자바)

https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 3차원 visit 배열을 사용 visit[x][y][열쇠 보유 상태] -> 열쇠 보유 상태는 비트 마스킹 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; i..

코테 공부 2023.04.02