처음에 접근한 Queue 방식으로 풀면 정답 값이 안나오고, PriorityQueue로 접근하면 정답 값이 나오는데 그 이유를 모르겠다.
강사님이 설명하신대로 풀면 쉽게 풀이되겠지만, 일단 내가 푼 방식이 왜 틀렸는지를 알아가는것도 중요하다고 생각해서...
아직도 잘 모르겠어서 강사님한테 질문을 요청드려봤다.
답변이 없을 수 있으니 OKKY 같은 곳에도 질문을 올려봐야겠다.
이왕 모르는게 나온 김에 PriorityQueue가 명확히 무엇인지 정도는 파악하고 넘어가려 한다.
우선순위 큐는 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조이다.
PriorityQueue 공부를 하고 있는데 결혼식 문제가 Queue로 왜 안풀렸는지 알것같다.
Queue는 FIFO이고, PriorityQueue는 우선순위 데이터가 먼저 삭제되도록할 수 있다.
Queue로 문제가 해결되지 않았던 이유를 예시로 설명해보자면
만약 하객 세명이
s = 0, e = 76이고,
다른 하겍 세명은
s = 75, e = 76이다.
우리는 e = 76인 경우를 모두 삭제해주고 싶다.
하지만 Queue로 구현하게 되면
s를 기준으로 오름차순하므로
0 76
0 76
0 76
이 세개의 데이터만 삭제하게 된다.
우리는
75 76
75 76
75 76
모두 삭제하고 싶은데 말이다.
하지만 priorityQueue를 사용하면
e = 76인 값을 모두 삭제할 수 있게되어 정확한 값을 출력하게 된다.
Queue로 풀다가 막혀서 강의를 봤는데 강의에서는 다른 방식으로 풀길래 인공지능에게 물어봤다.
인공지능은 PriorityQueue로 풀길래 PriorityQueue 지식이 없었던 나는 PriorityQueue 공부를 시작했다.
PriorityQueue는 우선순위 데이터를 먼저 삭제할 수 있는 Queue 방식이라는 사실을 배웠을 때는
Queue로 풀었을 때와 PriorityQueue로 풀었을 때의 차이점을 명확하게 인지하지 못한 상태였다.
결국 끝까지 이해하지 못하고, 일단 PriorityQueue 개념만 명확하게 이해하자는 생각으로 유튜브에
PriorityQueue 강의를 듣고 있는데 1분 9초 정도 강의를 듣는데 갑자기 팍!하며 아이디어가 떠올랐다
아.. 왜 인지 알 것 같다!
그리고 그 이유대로 문제를 접근하니 Queue로 동작했을 때와 PriorityQueue로 동작할 때의 차이점을 명확히 알 수 있었다.
머리를 쓴다고 쓰는데, 짱구를 굴리려고할 수록 문제가 안풀릴 때가 간혹 있다.
그럴 때는 내가 뭘 모르고 있는지를 명확히 파악하고 그 모르는 사항을 먼저 명확하게 이해해보자.
그러면 그 문제를 풀 수 있을 수 있는 것 같다.
동영상 데이터를 서버에 저장하는건 이미지 데이터를 저장하는 것과 비슷해서 되게 쉬웠다.
html5부터 video 태그를 제공해서 동영상 파일을 쉽게 업로드할 수 있게 되었다.
이미지처럼 form 태그로 DB에 저장하고, 저장된 데이터를 프론트로 보내줄 때 인코딩해줘서
URI + 문자열 형식으로 보내주면 된다.
// html 코드
<label for="video">동영상 첨부:</label>
<input type="file" id="video" name="video_give" accept="video/*">
//app.py 코드
video_id = find_myself['video']
if video_id:
try:
video_data = fs.get(video_id).read()
base64_video = base64.b64encode(video_data).decode('utf-8')
find_myself['video'] = 'data:video/jpeg;base64,' + base64_video
except gridfs.error.NoFile as e:
print.error("파일이 없습니다.")
다들 프로젝트에 성실히 참여해주시고, 성격도 좋으셔서
협업하는 동안 시간가는줄 모르게 된다.
서로의 아이디어를 제시하면서 프로젝트를 더 좋은 방향으로 발전시키는게 아주 재밌는 것 같다.
혼자 프로젝트를 진행할 때는 생각치 못한 좋은 아이디어들을
팀프로젝트로 진행할 때는 누군가가 제시해줘서 프로젝트를 더 좋은 방향으로 이끌어갈 수 있고,
나도 새로운걸 접하면서 실력이 쌓이는걸 느낀다.