프로그래밍 175

[백준] 7576 토마토 풀이

창고에 보관되는 토마토가 인접하면 서로 익는다고 한다. BFS로 풀면 되는 문제이지만 BFS문제마다 하나씩 포인트가 있다. 이 문제는 한 점에서만 탐색이 이루어지는 것이 아니라 동시에 여러 곳에서 BFS가 일어난다. 상자 안에 토마토가 여러개 있을 수 있으므로 각 지점부터 BFSF를 진행해 주어야 한다. 그래서 배열을 초기화 하는 과정에서 토마토가 들어 있다면 큐에 하나씩 넣어주어야 한다. 전체 소스 import java.util.*;import java.io.*; public class Q7576 { static int row; static int col; static int[][] tomato; static int[] moveX = {0, -1, 0, 1}; static int[] moveY = {-..

[넥스터즈] 개발 일지 1주차 개발 내용 및 아이디어 선정

넥스터즈 활동이 시작 되었다. 여러 기수 회원들이 참가한 이번 시즌에는 좋은 아이디어들이 많이 나왔다. 아이디어가 선정이 된 회원들은 (대략 10개정도) 발표를 하고 팀 모집을 시작했다. 모바일, 웹, 게임 등 다양한 프로젝트 아이디어들이 나왔다. 발표를 쭉 들어보고 원하는 팀에 가서 상담(?)을 받는 형식이었다. 내가 중요하게 생각한 부분은 스택과 아이디어 였다. 아이디어들은 다들 너무 좋았기 때문에 하고 싶은것이 몇 개 있긴했지만 그 중 제일 재밌어보이고 현실성 있는 아이디어가 있는 팀으로 갔다. 게다가 내 스택과 맞는 팀이었다. 현재 내가 새로운 언어를 공부하면서 진행하기에는 무리가 있기 때문이다. 프로젝트 기간이 2달이기 때문에 1주차부터 바로 개발에 투입되어야 해서 처음부터 배우면서 한다는 것은..

[백준] 11052번 카드 구매하기

문제 출처 : https://www.acmicpc.net/problem/11052 이 문제는 다이나믹 프로그래밍으로 풀 수 있다. 문제가 장황하여 주의력이 산만해지지만 침착하게 읽어보자. 카드팩의 배열이 배열의 인덱스는 카드의 갯수이고 배열의 값은 카드의 금액이다. 이 두가지 정보가 한 배열에 들어 있기 때문에 조금 헷갈릴 수 있다. 123456789101112131415161718192021222324import java.util.*; public class Q11052 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] card = new int[n+1]; in..

[넥스터즈] 넥스터즈(Nexters) 지원 동기 및 면접 후기

넥스터즈는 it 연합동아리로 디자이너와 개발자가 함께 일할 수 있는 모임이다. 개발을 하면서 항상 고민되는 것은 디자인 이었다. 그래서 부트스트랩을 애용하고 디자인을 차용한다. 하지만 디자이너분들과 같이 일하게 되면 그런 걱정을 하지 않아도 된다. 그리고 큰 동아리이고 서비스 출시까지 같이 하는 취지여서 너무 좋아서 지원하게 되었다. 후기가 좀 늦은 편이지만 사실 작년 학기 도중 지원하고 면접을 봤었다. 그리고 정기활동은 12/29일부터 시작을 하였다. 면접 때 느낀 것과 활동을 정리해보려고 글을 쓴다. 홈페이지는 여기다! http://teamnexters.com/ 홈페이지에서 발췌한 사진이다. 서류 접수를 3주간 받았다. 그리고 서류 합격자 발표가 났다. 학기 도중 지원서를 쓰고 기다렸다. 지원 당시에..

[데이터베이스] 동시 실행 제어 (Concurrency Control)와 공유 lock, 배타적 lock에 대해서

동시 실행 제어1. 락에 대해서 Lock - Based Protocol Lock이란 자원에 액세스하는 환경에서 순차적으로 제어할 수 있는 매커니즘이다. lock은 2가지로 분류할 수 있다. 1) Exclusive Lock : (X mode) 배타적 Lock은 여러 트랜잭션이 한 데이터에 접근할 수 없다. 2) Shared Lock : (S mode) 공유 락은 읽기 동안에만 일어나며 여러 트랜잭션이 동시에 한 데이터를 읽을 수 있다. Shared lock 끼리는 충돌하지 않는다. 하지만 Exclusive Lock과는 호환되지 않는다. 예를 보면 처음에 A 는 $100 B는 $200 을 가지고 있는데 B가 A에게 $50을 보내는 시나리오이다. T1이 자원 B에게 쓰기 위해서 배타적 락을 건다. B-50을 ..

[데이터베이스] 트랜잭션(Transaction)에대한 고찰

데이터베이스 트랜잭션데이터베이스 트랜잭션이란 데이터베이스의 상태를 변화시키는 프로그램의 작업 단위이다. 1. SQL 표준에서의 Transaction제일 첫 번째 SQL 문이 자동으로 Transaction 의 시작Commit을 호출하면 트랜잭션 종료Rollback을 호출하면 트랜잭션 취소AutoCommit 모드일 경우 SQL 문장 하나 단위로 Transaction 2. Transaction의 성질 (ACID) 2-1. 원자성 (Atomicity)트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 한다.. (all or nothing)트랜잭션이 부분적으로 수행된다면 데이터베이스에 반영되지 않아야 한다. 그렇지않다면 데이터베이스의 상태가 inconsistent해진다. 2-2. 지속성 (Durability..

[데이터베이스] 쿼리 최적화에 대해서 (Query Optimization)

데이터베이스 쿼리 최적화에 대해서두 개의 relational algebra 표현식이 데이터베이스 인스턴스에서 항상 같은 튜플들을 반환한다면 그것은 동등(equivalent)하다고 한다. (순서는 상관 없음) 참고) 스키마 : 데이터베이스의 논리적 구조, 인스턴스 : 특정시간에 사진을 찍었을 때 그 테이블의 모습. 즉 튜플들의 전체적인 모습 Equivalence Rules이 중에 대표적인 것들을 보자. 1. 네추럴 조인 (Natural Join)은 associative(동일)하다. 2. select연산의 동등성테이블 E1과 E2는 각각 1000개의 튜플을 가지고 있다고 하자. (조건은 세타제로 조건을 만족하는 것은 10개밖에 없다고 가정하자)왼쪽 식에서는 먼저 조인을 시도 한다. 각각 1000개니까 조인하..

[컴퓨터 보안] PGP (Pretty Good Privacy)와 Kerberos (커버로스)

PGP (Pretty Good Privacy)PGP는 인터넷 전자우편을 암호화하고 복호화하는데 사용된다. Phil Zimmermann이라는 사람이 개발을 했는데 개발 후에 이 사람이 수출을 시도하려다 미국에 저지 당하게 된다. 하지만 결국 빼냈고 나중에 와서는 공개로 바뀌었다. 지금 보면 이것은 굉장히 멋진 아이디어라고 생각한다. 그 당시 이것이 왜 국가기밀이었는지 실감이 날 정도이다. 이런 천재적 발상을 한 개발자가 존경스럽다. 왼쪽은 Alice 오른쪽은 Bob이란 친구다. Alice는 Bob에게 기밀성을 유지하는 이메일을 보내고 싶어한다. Alice의 입장먼저 Alice는 Ks라는 대칭키를 제작한다. (이것을 Bob과 안전하게 나눠갖는 것이 목적)보내려는 메세지 m 을 Alice가 제작한 대칭키 Ks..

[컴퓨터보안] 해시 (Hash Function) 함수 보안

Hash Function임의의 긴 입력값을 적절하게 처리하여 짧은 값을 출력하는 함수.암호학에서 사용하는 해쉬 함수 : 메세지 서명, 인증, 무결성 등에 사용.디지털 서명과 결합되어 메세지 무결성을 제공하는데 효율적이다.매핑된 해시 값으로는 원래 값을 알아내기 힘들다는 것에 착안하였다. 생활 속의 Hash function ??은행 현금인출기, 신용카드 확인, 주민번호, 휴대폰 명의, 생년월일, 성인 인증 등비밀번호 분실시 휴대폰으로 인증번호를 받는 경우. 인증번호는 항상 다름 (hash function으로 생성)압축 오류 검사, 파일 다운로드 오류 검사 해쉬 함수 과정 밑에 그림이 전자 서명을 하는 과정을 간략히 나타낸 것이다. 메세지를 Hash를 돌려서(무결성, integrity) 저 체크무늬 박스가 ..

[컴퓨터보안] El Gamal (엘가말) 과 Diffie - Hellman (디피헬만) 프로토콜

El Gamal (엘 가말) RSA 알고리즘은 소인수분해가 어렵다는 점을 이용하였고 El Gamal은 이산대수의 어려움을 이용하였다. 큰 소수 p를 정하고 p보다 작은 임의의 g,x를 선택한다. 방법 :Y = g^x mod p 를 계산한다. 공개키 : Y, p, g 가 되고 비밀키 : x 가 된다.p-1과 relative prime 한 임의의 k를 정한다.암호화는 a = g^k mod p , b = M*Y^k mod p 인 (a,b)를 정한다. (M은 암호화할 값)복호화는 b/a^x mod p = y^k*M/a^x mod p = M특징은 k를 임의로 설정하기 때문에 동일한 M에 대해 매번 다르게 암호화 된다. (RSA와의 차이점) 그리고 Ciphertext는 원래 M 길이의 2배가 된다. Diffie -..

반응형