일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Union-find
- 카카오
- LIS #Algorithm #요소추적
- Smilegate
- 소감
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 유니온파인드
- 코테
- BFS
- 알고리즘
- 백준
- 삼성 #코테 #2020상반기 #c++
- 코딩테스트
- BaekJoon
- 중반부
- 보석쇼핑
- Algorithm
- 1편
- 식단
- 투포인터
- c++
- 카카오인턴
- 서버개발캠프
- 스마일게이트
- Today
- Total
목록Category (222)
짱아의 개발 기록장
전형적인 플로이드 와샬 문제이다. 거쳐가는 점, 출발 점, 도착 점을 3중 for문으로 돌아 dp값을 계속 갱신해주었다. 그 후에는 i->i로 의 경로중 가장 최소 값을 구해주었다. 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 // 운동(플로이드 와샬) #include #include using namespace std; int v, e, a, b, c; int dp[401][401] = {0, }; int road[401][401] = {0, }; int total ..
전형적인 다익스트라 문제이다. 다만, 최소 비용을 구하는 것에서 끝나는 것이 아니라 최소비용을 위해 거치는 모든 도시들을 출력해야한다. 그래서 본인은 city라는 배열을 사용하여 최소 비용의 값이 갱신 될 때마다, 해당 도시를 넣어주었다. 즉, city[a] = b라면 a로 오는 모든 경로중 최소 비용을 차지하는 경로의 출발 도시가 b임을 의미한다.(b->a) 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 ..
시작점을 제외하고 거칠 수 있는 점이 총 7개(텔레포트 6개 + 도착 점 1개)이다. 총 7개의 점을 순열로 순서를 정하고 순서에 맞게 각 점사이의 거리를 더하고 텔레포트를 하기 위한 시간 10을 더한다. 텔레포트를 하기 위한 시간을 왜 더했는지 묻는다면.... V.push_back({a, b, c, d}) 와 같이 구조체 형태로 텔레포트지점을 저장했기 때문이다. 그리고 중간에 도착지점에 도착한다면 break로 빠져나왔다. 흠..이 문제는 설명하기가 참 어렵다...ㅎㅎ 그냥 코드를 읽으면 이해하기 더 쉽다. 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ..
카카오에서 나올 법한 문자열 처리 문제였다. 숫자를 기준(idx)으로 idx+2값이 전체 문자 전체의 길이에 벗어나지 않는다면, 괄호를 추가하거나 추가하지 않는다. 1) 괄호를 추가한다면, idx(숫자), idx+1(연산자), idx+2(숫자) 값을 계산해준 다음 그 전까지의 총합과 계산하여 넘겨주었다. 그리고 다음 idx값은 idx+4가 된다. 2) 괄호를 추가하지 않는다면, 그 전까지의 총합과 지금 값을 연산해주고 다음 숫자로 넘어간다. 코드를 보면 더 이해가 잘 될 것이다. 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 4..
Auth Server Project 다음과 같은 조건을 갖춘 Auth Server를 개발했다 이메일 인증 RDBMS 사용 (Mysql) 비밀번호 찾기 Password Encryption 로그인 및 회원가입 기능 비밀번호 보안모듈인 pbkdf2 사용(with SHA512) 단반향 암호 알고리즘인 sha512를 사용하여 암호화하였지만, 단방향 암호화에 사용되는 해시함수는 다음과 같은 문제점을 가지고 있다. 무차별 대입공격(brute-force attack)에 취약하다. 레인보우 공격(rainbow attack) 항상 동일한 값을 갖는다면 탈취한 값을 기반으로 rainbow table을 만들어 공격한다. salting이란? 위의 해시함수가 가지는 다양한 문제점들을 보완하기 위한 하나의 방법이다. 임의의 문자열..
본인은 c++의 큐 라이브러리를 사용하지 않고 직접 구현하여 문제를 풀었다. 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 // 큐 #include using namespace std; int queue[10001] = {0, }; int front = -1, rear = -1; int n, m; string s; void insert(int data) { if(front==-1)..
본인은 c++의 스택 라이브러리를 쓰지 않고 직접 구현하여 문제를 풀었다. 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 // 스택 #include using namespace std; int n, m; string s; int stack[10002] = {0, }; int top = -1; // 가장 위에 부분을 가리키고 있는 변수 bool empty() { if(top==-1){ return 1; }else{ return 0; }..
일반적인 큐처럼 동작하는 코드를 오직 배열만을 사용하여 구현해보았다. insert, del, empty, print함수로 나누어 구현했다. 코드 첨부 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 // 큐 구현하기 #include using namespace std; int queue[100] = {0, }; int n = 100; // 최대 크기 int front = -1, rear = -1; void insert(int data) { if(rear == n-1){ // queue배열이 꽉 찬 경우 ..