본문 바로가기
320x100

Blog189

로그인 유저 글쓰기/댓글쓰기 차별화 저번에 로그인까지 만들었는데, 그 이후 로그인 유저는 글쓰기와 댓글쓰기를 비밀번호 입력 없이 가능하도록 수정해야 했다. 이 과정에서 많은 수행착오가 있었고, 결국 보안상 별로 좋지는 못하지만 기능을 구현하는데는 성공하긴 했다. 글쓰기 먼저 로그인 유저의 경우 글쓰기를 할 시 닉네임이 수정 불가능이어야 하고, 글 삭제, 수정을 위한 비밀번호 입력이 없어야 한다. 이를 위해 write.ejs에서 로그인 정보가 없을 경우만 비밀번호 입력란을 생성하도록 하였다. 물론 view.js에서 세션의 로그인 정보를 페이지 렌더링 전에 넘겨준다. 닉네임 입력란 같은 경우 수정 불가능하도록 바꿨다. 로그인 유저의 경우 글의 password 칼럼은 유저의 고유 id 값을 암호화하여 저장하였다. 글조회 글 조회의 경우 비로그인.. 2021. 4. 5.
[CLASS 4]백준 13549번 - 숨바꼭질 3 13549번 : 숨바꼭질 3 숨바꼭질 2에서 좀 힘들었던 경험이 있어서 3은 더 어렵지 않을까 걱정했지만 오히려 엄청 쉽게 풀 수 있었다. 이 문제에서 특이한 점은 순간이동은 시간을 소비하지 않는다는 것이다. BFS를 수행하되 어떤 점에서 2배를 계속 하면서 큐에 한번에 다 추가해 주어야 한다. 그래야 큐 안에 시간이 2초 이상 차이나는 경로가 추가되지 않는다. 내 코드: # dawitblog.tistory.com from collections import deque n,k = map(int,input().split()) if n >= k: print(n-k) exit() limit = 2*k-n q = deque([(n,0)]) visited = [False] * (limit+1) visited[n] .. 2021. 3. 29.
[CLASS 4]백준 12865번 - 평범한 배낭 12865번 : 평범한 배낭 DP중에서도 대표적인 냅색(Knapsack,배낭) 문제이다. 처음 푼다면 좀 어지러울 수 있는데, 물품을 하나씩 검사하면서 최대 가치를 갱신한다는 점에서 정말 DP스러운 문제라고 생각한다. 내 코드(1차): # dawitblog.tistory.com from sys import stdin input = stdin.readline n, k = map(int,input().split()) l = [0] for _ in range(n): w, v = map(int,input().split()) # 버틸 수 있는 무게를 넘는 물건은 추가하지 않음 if w a만큼 버틸수 있는 가방에 b번째 물건까지 넣었을 때 최대가치 dp = [[0]*(n+1) for _ in range(k+1)] .. 2021. 3. 26.
[CLASS 4]백준 12851번 - 숨바꼭질 2 12851번 : 숨바꼭질 2 숨바꼭질 1 문제를 푼 기억이 있어서 2도 엄청 쉽게 풀 수 있을 줄 알았는데 착각이었다.. 1과의 차이점은 최단시간으로 가는 서로 다른 최단경로가 몇가지 있는지까지 찾아야 하는 것인데, 이게 생각보다 쉽게 찾아지지가 않았다. 내 코드: # dawitblog.tistory.com from collections import deque n, k = map(int,input().split()) if n >= k: print(n-k,1,sep='\n') exit() check = [[-1,0] for _ in range(100001)] q = deque() q.append(n) check[n] = [0,1] while q: now = q.popleft() for new in (now.. 2021. 3. 25.