본문 바로가기

Codeforces Round 899 (Div.2) 검수 후기 있었던 일은 약 두달전이지만, 현장실습이랑 카카오테크캠퍼스 하다 보니 써야지 써야지하다가 밀려져서 이날 까지 오게 되었다. solved.ac 홍보글들을 읽어보던중에 한국인(puppy)이 개최하는 codeforce 대회의 검수를 모집하는 글이 있길래 읽어보니 등급별 다양한 리뷰를 위해 그레이~레드 까지를 모집하고 있는 내용이었다. 당시 그린에서 그레이로 떨어지고 그 뒤로 코드포스를 돌리지 않은 나는 그레이로 신청하였고 선정되었다. 디스코드에 초대된 후 버츄얼을 쳐보고 좋지않은 성적을 받은후에 업솔빙을 해보게 되었다. https://www.acmicpc.net/category/detail/3976 Codeforces Round 899 (Div. 2) www.acmicpc.net 문제들은 codeforce, ..
다익스트라 const int INF = 1000000000;int N, D, C;vector graph[10002];int dist[10002];int a, b, c; vector path[10002];priority_queue > pq; for (int i = 1; i > pq;pq.push({ 0, C });dist[C] = 0;while (!pq.empty()){ int cost = -pq.top().first; int cur = pq.top().second; pq.pop(); if (dist[cur] cost + nCost) { dist[next] = cost + nCost; pq.push(make_pair(-dist[next], next)); } }}
Java 문법 Integer, int 그리고 final int, Integer Java에서는 int Integer이 따로 있다. 다른 사람 코드를 보면서 알게 된 사실이다. 큰 차이는 다음과 같다. int : 원시 자료형 Integer : nullable한 Wrapper class 알고리즘 문제 해결 같은 경우에는 int를 사용하여 동작을 빠르게 하는게 좋을것 같고 실무의 경우에는 Integer를 사용하여 Optional을 따로 안걸어서 null check를 해줄 수 있는 것이 좋을 것 같다. final Java로 BE 프로젝트를 하다보면 어떤 경우에 final이 붙어있는 함수도 있고 어떤 경우에는 없는걸 보고 어떤 문법인지 알아보게 되었다. final이 어디에 붙냐에 따라 의미가 달라진다. final + 변수 : 변수를 수정 할 수 없다. 초기화한후 변경 ..
자바스크립트 난독화 보안 어노테이션 툴 개발중에 들었던 생각이었는데, 디버깅하기위해서 console.log(변수) 로 찍어보면서 크롬 개발자 도구(F12) 콘솔에서 변수를 찍어볼 수 있다는것이 개발자 뿐만 아니라 사용자도 해볼 수있다는 것이 데이터 변조나 보안에 위험이 될 수 도 있다는 생각이 들어서 찾아봤던 개념이다. 자바스크립트 특성상 브라우저에 실행되는 js파일들을 사용자가 그대로 볼 수 있다고 생각했기 때문이다. 그래서 검색해보니 나왔던 결과는 과거에 웹해킹 문제들에 나올것만 같았던 방식들이었다. 내가 생각한 것들이 역시 과거에도 다뤄졌던 것 같다. 다양한 방법의 난독화가 존재하는데 1. split 사용 문자열들을 나눠서 흩뿌려놓고 읽기 어렵게 한다. 2. 문자열 인코딩 문자열을 인코딩해서 사람이 알아먹을 수 없는 문자로..
현장실습 어노테이션 툴 제작기 리뷰 소개 4학년 2학기 되서 광주에 있는 인트플로우 회사에 현장실습을 하러 왔다. 기간은 9월 ~ 11월. 첫 날은 금요일이여서 그런가 딱히 뭔가를 하진 않고 어떤 회사인지에 대한 간단한 설명?을 듣고 3명이서 갔는데 한 분은 인공지능 부서 쪽 나랑 다른 한 분은 서비스 부서으로 가게 됬다. 처음으로 하게 될일은 사내에서 사용하고 있는 어노테이션 툴이 급하게 만들어진거다 보니 수정보완에 여러 애로사항이 있어서 개선사항을 기획하고 거기에 요구사항까지 추가하는 것이었다. 어노테이션 툴 이란? 인공지능에서 라벨링 할때 물체에 boundingbox를 달거나 라벨을 다는 것에 도움을 주는 도구이다. 하지만 우리가 개발할 툴은 아무것도 없는 이미지에서 라벨링을 하는것이 아니라, 1차적으로 인공지능이 라벨링한 데이터를 ..
AJAX란? Async? Await? Axios? Asynchronous Javascript and Xml 비동기 방식으로 전체페이지가 아닌 페이지 일부만 로드하는 기술 동기방식 : 직렬 비동기 방식 : 병렬 XMLHttpRequest Object 생성 -> Callback 함수 생성 -> Request 장점 : - 빠른 반응성 - 서버 부하감소 - 백그라운드 데이터 처리 단점 : - 브라우저 히스토리 관리 - 검색엔진 최적 Async, Await 비동기 처리를 하기 위한 최근 문법 promise를 반환한다. async function func(){ await method(); } promise가 해결 되기 전까지 이후에 코드를 실행하지않는다. Axios 는 ? 아예 별개의 개념 ajax를 구현하기 위해서 사용하는 비동기 통신 라이브러리. 비동기 통신을..
onclick vs addEventListner , id vs class onClick vs addEventListner 이것도 역시 개발을 하다 의문이 생겨 공부하게 된 내용이다. 클릭 동작의 경우에 초창기에는 거의 onclick 으로 코드를 짰다. 하지만, 검색들을 통해 이것저것 알아보다 보니 많은 사람들이 addEventListner를 사용하길래 어떤 차이가 있나 알아봤다. 가장 큰 이유는 onclick은 하나의 event만 추가할 수 있고 addEventListner는 여러 이벤트를 누적해서 실행 시킬 수 있다. 사소한 차이가 있다면 onclick은 모든 브라우저에서 사용가능한데, addEventListner는 오래된 브라우저는 지원하지않는다. addEventListner는 저번에 배운 버블링, 캡쳐링을 적용할 수 있다. 이러한 점들을 고려해서 리팩토링 할때 모든 on..
버블링과 캡처링 저번과 마찬가지로 현장실습할 때 의문점이 생겨 공부하다가 알게된 개념이다. 어노테이션툴은 백엔드 보다 프론트에서 작동하는게 많았기 때문에 클릭 드래그 등을 하다가 작동하지 않을때 검색해 보았다. 버블링 내부의 버튼을 클릭했을때 외부에 할당한 핸들러도 동작하는것이다. 즉, 자식요소의 이벤트가 동작할때 최상단에 도달할떄까지 각 요소의 이벤트가 동작한다. event.stopPropagation() 을 이용하여 버블링을 멈출 수 있다. 캡처링 주로 사용되지 않는다고한다. 이는 반대로 이벤트가 하위요소로 전달될때 쓴다고한다. capture : true 옵션으로 동작한다. 참고 1. https://ko.javascript.info/bubbling-and-capturing