분류 전체보기215 최단 경로 찾기 : 플로이드 워셜(Floyd-Warshall) 알고리즘 들어가며 오늘 살펴볼 알고리즘은 지난번에 살펴봤던 다익스트라 알고리즘과 마찬가지로 최단경로를 찾는 알고리즘 중 하나인 플로이드 워셜(Floyd-Warshall) 알고리즘입니다. 같은 목적을 가진 알고리즘이라 그런지 익숙하게 느껴지는데, 플로이드 워셜은 어떤 방법을 통해서 최단경로를 구하는지 살펴보도록 하겠습니다. 알고리즘 플로이드 워셜 알고리즘은 동적 계획법을 활용한 길찾기 알고리즘입니다. 다익스트라가 지금까지 방문한 지점에서 가장 짧은 거리에 있는 지점을 차례로 선택하여 길을 찾아가는 반면, 플로이드 워셜은 지점들 중 하나를 선택해 두 지점을 연결하는 경로 중 해당 지점을 경유하는 가장 짧은 거리를 갱신하여 저장하는 과정을 반복해 길을 찾아가는 방법입니다. 로직으로 만들기 쉽게 단계별로 살펴보면, 경로.. 2023. 5. 21. 디지털 서명의 부인방지(Non-repudiation) 이전 포스트를 통해 일방향 해시함수가 어떻게 파일의 무결성을 확인할 수 있는지 알 수 있었습니다. 그러나 이런 일방향 해시함수를 사용한다고 해도, 송신자 측에서 통신이 이루어졌다는걸 부인해버리면 이 통신의 진위를 확인할 방법이 없다는 문제점이 남아 있었습니다. 따라서 보다 안전하고 확실한 통신을 위해 어떤 요청을 해당 송신자가 보낸 것이 확실하다는, 이른바 부인방지(Non-repudiation) 라고 하는 기술이 필요했는데요. 오늘 설명할 디지털 서명이 바로 통신간 부인방지를 적용하기 위해 등장한 기술입니다. 이번 글에서는 디지털 서명이란 어떤 것인지, 어떻게 디지털 서명이 이러한 문제를 해결할 수 있었는지에 대하여 알아보겠습니다. 디지털 서명이란? 디지털 서명(Digital Signature)이란 말 .. 2023. 5. 14. 짧은 구데기컵 참여 후기 지난 4월 30일부터 5월 1일까지 진행된 구데기컵에 참여한 후기입니다. 코딩 테스트를 준비하면서 알고리즘 문제들을 풀어보신 분들에게 백준 온라인 저지(BOJ)는 한 번쯤 들어봤거나, 꽤 친숙한 이름입니다. 저도 많이 이용하고 있고, 이전에 관련해서 주저리주저리 포스팅도 많이 했었습니다. - BOJ를 통해 개최된 대회 "UCPC" 참가 후기 : 2018 , 2021 단순히 문제를 푸는것 이외에도 랭킹 시스템이나, 다른 사이트와의 연동을 통해 알고리즘 문제 풀이에 동기부여를 해주는 부가적인 기능이 많아서 꽤 재밌게 하고 있는 요즘입니다. - codeforce와 연동하여 아이디 색 바꾸기, solved.ac 골드 티어 달성 기념 개인적으로, 또는 학교나 회사 등의 단체로 많은 대회들이 열리고 있지만 오늘 쓸.. 2023. 5. 7. 파일의 무결성 검증하기 (일방향 해시 함수) 들어가며 지난 포스트에서는 데이터를 안전하게 암호화하여 보내는 방법에 대해 알아보았습니다. 통신 중간에 누군가가 민감한 정보를 열람하는 것을 방지하기 위해 원본 데이터를 제 3자가 알아볼 수 없게 만드는 암호화를 사용했고, 이러한 방법을 통해 기밀성을 지킬 수 있었습니다. 그러나 기밀성을 지키는 것만으로는 충분하지 않았습니다. 적절한 암호화는 중간자가 내용을 알아보지 못하게 만들수는 있었지만, 중간자가 내용을 바꿔서 보내거나 아예 엉뚱한 응답을 보내는걸 막을 수는 없었습니다. 이에 처음 보냈던 내용과 다른 내용을 수신하는 것을 방지할 필요가 있었고, 이는 곧 기밀성에 이어 또 다른 요소인 무결성(integrity)을 검증하는 여러 방법을 탄생시키는 배경이 되었습니다. 일방향 해시 함수 검증을 진행하는 개.. 2023. 4. 30. 자바스크립트에서 값 비교하기 들어가며 자바스크립트에서 값을 비교하는 방법으로는 크게 세 가지가 있습니다. == 를 사용하는 느슨한 비교 (loose equality) === 를 사용하는 엄격한 비교 (strict equality) Object.is() 를 사용하는 비교 느슨한 비교는 타입이 다르더라도, 변환했을때 값이 같으면 true를 반환하는 비교입니다. 때문에 비교 대상끼리 암시적 형변환이 일어나는 비교라고 볼 수 있습니다. 엄격한 비교는 값이 동일하더라도 타입이 다르면 false를 반환하는 비교입니다. 비교 로직 중 어떠한 형변환도 일어나지 않습니다. Object.is()를 사용하는 비교는 일단 두 값이 같은지만을 검사하는 비교입니다. 엄격한 비교와 마찬가지로 형변환이 일어나지 않습니다. /* 1. 느슨한 비교 */ '36' .. 2023. 4. 23. 검색창 영역을 위한 시멘틱 태그 <search> 지난 2023년 3월 24일부로, HTML standard에 새로운 시멘틱 태그가 추가되었습니다. 오늘 소개할 가 바로 그 주인공입니다. 등장 시멘틱 태그는 지난 포스트들에서도 몇 번 등장했었던, 접근성을 고려한 웹을 만들때 빠지지 않고 등장하는 개념입니다. 스크린 리더와 같은 장비가 웹 페이지를 쉽게 탐색할 수 있도록 시멘틱 태그를 이용해 영역 별로 역할을 나누어 준 것을 랜드마크(landmarks) 라고 하는데, 예시로는 main, header, aside, nav ... 등이 있습니다. 우리가 흔히 사용하는 웹 페이지는 이러한 랜드마크의 역할(role)을 통해 대부분의 영역을 설명할 수 있습니다. 랜드마크로는 아래의 8가지 역할이 지정될 수 있습니다. banner complementary conte.. 2023. 4. 15. 이전 1 ··· 4 5 6 7 8 9 10 ··· 36 다음