본문 바로가기

전체 글178

java script - 프로젝트 1 - 2. 영어 한글 변환기 기본 규칙영어를 한글로 바꾸는 것은 정말 어렵습니다. "rkqkd(가방)"이라는 글자가 있으면 'rk', 'qkd'으로 끊어줘야 합니다. 어디서부터 어디까지가 한 글자인지 알아야 한다는 것이죠. 우선 몇 가지 규칙을 찾아봤습니다.모음은 항상 중성입니다.초성이 없는 중성 뒤에 자음이 오면 이 자음은 항상 초성입니다.모음 뒤에 모음이 올 수 있는 경우는 "ㅘ", "ㅙ", "ㅚ", "ㅝ", "ㅞ", "ㅟ", "ㅢ" 뿐입니다.초성은 항상 자음 하나입니다.('ㄳ' 같은 경우는 없습니다.)이 규칙을 고려했을 때 다음과 같은 방법을 생각해 볼 수 있습니다.입력한 영어를 글자로 바꿉니다.모음인 경우(1번 규칙)앞글자가 없으면 "초성이 없는 중성"입니다.앞글자도 모음이면 앞글자와 합쳐질 수 있는지 확인합니다(3번 규칙).. 2024. 5. 14.
[논문 리뷰] ImageNet Classification with Deep Convolutional Neural Networks alexNet에 대한 논문을 리뷰해 보겠습니다. 깊이 들어가기보다는 무엇을 하는 녀석인가데이터는 어떻게 모았는가구조가 어떻게 되어 있는가에 초점을 맞춰 보겠습니다. 어느 정도의 지식이 있으면 직접 구현할 수 있도록 하는 것이 목표입니다. 무엇을 하는 녀석인가어떤 물체가 있는 이미지를 주면 이 물체가 무엇인지 맞추는 녀석입니다. 227 * 227 크기의 이미지를 입력으로 받고 1000개의 분류 중 어떤 것이 정답인지 맞춥니다. 테스트 데이터에서 top-1 error(모델이 내놓은 답 상위 1개 중 정답이 없을 확률)가 37.5%, top-5 error가 17%로 당시 SOTA(가장 좋은 모델)를 이겼습니다.데이터는 어떻게 모았는가ImageNet에는 1500만 개의 고해상도 이미지들이 있습니다. 다양한 크기.. 2024. 5. 12.
java script - 프로젝트 1 - 1. 영어 한글 변환기 아는 것과 할 줄 아는 것은 다르다고 합니다. 그리고 할 줄 아는지 체크하기 가장 좋은 방법은 직접 무언가를 만들어 보는 것이라 생각합니다. 여기서 ":무엇을 만들 것인가"가 정말 힘든데 저는 3가지 기준에 따라서 정합니다.나에게 지금 당장 필요한 것이 무엇인가취미와 관련된 무언가를 만들 수 있는가지금 눈 앞에 있는 것을 클론코딩 할 수 있는가wjsms vudthdp ejffjdrjflsms ausdl저는 평소에 덜렁거리는 면이 있어서 가끔 한글로 써야 하는데 영어로 쓰거나 영어로 써야 하는데 한글로 쓰는 경우가 있습니다. 이런 경우 자동으로 한글과 영어를 바꿔주는 프로그램이 있으면 많이 편할 것 같네요. 한번 만들어 보겠습니다.한글 -> 영어한글을 영어로 바꾸는 것이 더 쉬워 보여서 이것부터 시작하겠습.. 2024. 5. 12.
java script - 2. 기초 문법 - 초급 기본적은 프로그래밍은 할 줄 안다고 가정하고 javascript의 문법과 특징들에 대해 간략히 설명할 예정입니다. 출력console.log("~~~")로 출력합니다.console.log("hello world!")//hello world!변수let, const가 있습니다(var도 있긴 한데 안 쓰는 것을 추천합니다). let은 재할당 가능한 변수, const는 재할당이 불가능한 변수입니다.//letlet a = 1;console.log(a); // 1a = 100;console.log(a); // 100//constconst b = 1;console.log(b); // 1//error// b = 100;// console.log(b); 반복문다른 언어들과 비슷하게 for와 while을 사용합니다. con.. 2024. 5. 11.
java script - 1. 환경설정 java script를 실행하기 위한 기본적인 환경 설정입니다.크롬을 이용하거나 웹을 만드는 방법도 있지만 이 글에서는 node.js를 이용한 방법으로 진행할 것입니다.우선 vscode(https://codestudycafe.tistory.com/16)와 node.js(https://codestudycafe.tistory.com/17)를 설치합니다. 그리고 개발을 진행할 폴더를 만들고 해당 폴더에서 vscode를 실행합니다.저는 project라는 이름의 폴더를 만들었습니다. 왼쪽 탭에서 새 파일을 만들고 test.js로 이름을 바꿉니다. 모든 프로그램의 시작은 hello world죠.console.log("hello world!") 를 입력하고 윈도우 기준 ctrl + shift + ` 를 눌러 터미널을.. 2024. 5. 11.
네트워크 플로우 네트워크 플로우 알고리즘은 직관적이지도 않고 증명도 어렵고 플로우를 사용하는 문제인 걸 알아도 "이게 플로우라고?"라는 생각이 드는 알고리즘입니다. 최대한 직관적으로 이해할 수 있도록 해 보겠습니다.그래서 뭐하는 알고리즘인가?다음과 같은 문제를 생각해 보겠습니다.그래프가 하나 주어집니다. 주어진 그래프에는 $N$개의 정점과 $M$개의 파이프가 있습니다. 각 파이프는 물을 한쪽 방향으로만 흘릴 수 있습니다. 각 파이프의 흐를 수 있는 양은 다릅니다. 시작 정점과 끝 정점이 주어졌을 때, 시작 정점에서 끝 정점으로 최대한 많은 양의 물을 보내고자 합니다. 얼마나 보낼 수 있습니까? 예를 들어 다음 그래프 같은 경우(s부터 e까지) 다음과 같이 물을 흘리면 15만큼 흘릴 수 있습니다. 시간복잡도 같은 것들을 .. 2024. 5. 10.