개발자 25

[알고리즘] 백트래킹 Backtracking

최근 코딩테스트 문제를 풀면서 알고리즘 정리가 필요함을 느꼈다.자주 출제되는데 아직 나에게 어려운 백트래킹을 먼저 정리해보려고 한다. 백트래킹 모든 경우의 수를 고려하는 알고리즘 백트래킹은 재귀를 활용해 모든 경우의 수를 확인하는 알고리즘이다.대표적으로 DFS, BFS를 사용하며 코딩테스트에서 잘 다루어지는 알고리즘이기도 하다.시간복잡도는 중복이 가능한 경우, N**2이고 중복이 불가한 경우는 N!이다. 목표한 조건에 도달하는 경우를 탐색하는 것인데,절대 목표에 도달할 수 없다고 판단이 되면 앞으로 돌아가서 다시 그 조건에 맞는 경우를 탐색한다. 1. DFS깊이 우선 탐색트리에서 바닥에 도달할 때까지 한쪽 방향으로만 내려가는 방식으로재귀함수를 사용하여 목표한 바가 나올 때까지 반복한다.일반적으로 모든 경..

[백준/python] 20436번 ZOAC 3

백준 20436번 ZOAC 3 1. 문제 이 문제는 쿼티 자판에서 타자를 칠 때 걸리는 시간의 최솟값을 구하는 문제이다.키를 누르는 데 1의 시간이 걸리고 이동하는 데 두 좌표의 거리 (직선 거리 말고 택시 거리) 만큼의 시간이 걸린다.독수리 타법, 즉, 양손의 손가락을 하나씩만 사용하는 타법이고 왼손과 오른손은 한글 자음 모음의 위치로 구분한다.2. 풀이조금 귀찮은 구현 문제였다.쿼티식 키보드에 있는 모든 문자, 즉 알파벳 26개를 모두 배열에 넣어야했다.거리 계산의 간편함을 위해 가장 아래 왼쪽에 있는 'Z'를 (0,0)이라고 생각해서큰 배열 안에 3개의 줄이 있는 이중배열 구조로 키보드를 표현했다. 입력값은 모두 좌표가 아닌 문자로 주어지기 때문에 이걸 좌표로 바꾸는 함수를 만들었다.coordina..

[프로젝트] 스마트오더 플랫폼, Food Bridge 프로젝트 회고

2024. 01. 15 ~ 2024. 04. 28까지 3달 넘게 진행한 프로젝트가 끝났다.4월 5일에 배포를 하고 그 뒤에 서비스를 운영하며 유지보수 기간도 가졌다.긴 프로젝트 기간 동안 어떤 일들이 있었는지 그때마다 기록했으면 좋았겠지만 아쉽게도 그러지 못했다.이게 첫 프로젝트라 그래서일까 기록의 중요성을 너무나 늦게 알아버렸다.그 당시에 기록은 못했지만 사후기록이라도 남겨봐야지. 첫 프로젝트를 시작한다고 의욕 넘치던 초반에 썼던 글...이때부터 계속 기록을 남겼어야했는데! https://jemarque.tistory.com/entry/%EC%B2%AB-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D..

Project 2024.04.30

[스마트오더] 팀 프로젝트를 시작하다

리액트 강의를 거의 다 들었을 무렵부터 인프런과 홀라에 올라오는 팀프로젝트 게시물을 유심히 보기 시작했다. 개인프로젝트부터 하는게 순리인 것 같기도 하지만, 괜히 팀플로 더 멋진 결과물을 만들고 싶은 느낌. 인프런에 올라온 글을 보고 문의를 몇 번 했으나 매번 next.js나 typescript라는 조건 때문에 참여를 못했다. 그러나 이번에 올라온 글에는 언어가 명시되어 있지 않아 문의를 넣었다. 다행히 아직 언어를 정하기 전이어서 이미 합류해 계신 프론트엔드분과 협의하여 자바스크립트로 개발을 진행하기로 했다. 이 팀에서는 실력보다는 인성과 태도 부분에서의 3가지 요소를 보았고 그 부분은 모두 자신 있었다. 많은 시간을 투자해서 부족한 실력을 잘 메워야지. 이 팀은 디자이너가 없어서 ui 개발을 다같이 ..

Project 2024.01.16

[이산수학] Mathematical Thinking in computer Science 5주차

Summary. Invariants are important tools for proving impossibility, termination, and various bounds. 불변량은 불가능성, 종료 등의 문제를 해결하는데 중요한 도구이다. Invariants may take many forms: numbers, "parity", equations, inequalities. 불변량은 숫자, 패리티, 등호, 부등호 등 다양한 형태일 수 있다. To prove impossibility, one finds a quantity that never changes during a process. 불가능성을 증명하기 위해 과정 동안 바뀌지 않는 양을 찾는다. To prove that a process termin..

[SEF2023] DAY 1. LEARN 당신도 배울 수 있습니다 강연 정리

경제학과 출신, 네이버 로봇 자율주행 개발자 되다 김건우 (네이버랩스 로봇 자율주행 개발자) 시작한 이유 컴퓨터에 흥미를 느껴 복수전공을 시작했음 주변 사람을 가르쳐주는 것에 흥미가 있었음 -> 내가 하는 일이 다른 사람들에게 효용을 주었으면 좋겠다 어려움 복수전공 1학기 때 수업이 괜찮아 공부하지 않고 2학기를 맞이함 자료구조, 어셈블리 등을 마주하며 어려워짐 친구의 조언으로 인해 다시 마음을 잡고 공부함 학습 팁 이해가 안되면 외운다 외운 게 이해가 되면 누구에게 발표한다 (장기기억) 경제학과가 도움이 된 점 수학 (미적분, 선형대수학, 통계 등) 로봇에 관심을 가지게 된 계기 네이버 랩스 대표님 유튜브 영상 RC카 만들기 프로젝트에 참여 자율주행 로봇에 관심을 가져 일 시작 로봇자율주행 locali..

강연 기록 2023.09.06

[독서기록] 비전공자를 위한 이해할 수 있는 IT 지식 (2)

비전공자를 위한 이해할 수 있는 IT 지식 복습 웹(Web) 웹의 기본 - HTML : 운영체제에 상관없이 브라우저만 있다면 웹사이트에 접속해 동일한 정보를 볼 수 있음 - 태그 : 정보를 표현하기 위한 코드 - HTML은 프로그래밍 언어가 아님, 브라우저가 볼 수 있는 문서를 적는 언어임 - CSS : HTML에 디자인을 입힐 수 있는 코드 - HTML + CSS = 퍼블리싱 작업, 마크업 작업 - JavaScript (js) : 실시간 검색어 목록 조회, 인터넷 속도 조절 등 역할 - 새로 고침 = HTML, CSS, JavaScript 다운로드 받는 것 - 웹은 수정이 용이하나 항상 새로 고침을 해야 함 - 앱은 업데이트를 해야하지만 네트워크의 영향을 조금만 받음 브라우저 - 대표 브라우저 : 크롬..

독서 기록 2023.08.10

[이직기록] 2023년 하반기 개발 공부 계획 (이론편)

2023년 하반기 공부 계획을 정리해보려고 한다. 비전공자에게 부족한 IT 지식(이론)과 프로그래밍 능력을 동시에 학습할 수 있도록 투트랙으로 계획을 세워보았다. 이산수학 - 파이썬 기초 - 데이터 구조&알고리즘 - 구글 IT 서포트 - 인프런 강의 1. 이산수학 (수강중) 컴퓨터 공학과 1학년 때 수강하는 과목인 이산수학. 컴퓨터는 수학을 기반으로 이루어진 학문이라 1학년 때 배우는가보다. 코딩테스트를 잘 보려면 알고리즘을 이해해야 한다고 하는데 아마 그러한 기초 지식을 얻을 수 있는 수학 과목이 아닐까 싶다. 이산수학은 영어로 공부하기에는 다소 진입장벽이 높아서 KOCW에서 강의를 골랐다. 가천대학교 김철연 교수님께서 2014년도에 수업하신 강의를 보고 있다. 거의 10년 전 강의이지만 KOCW에 올..

이직 기록 2023.08.10

[이산수학] KOCW 가천대학교 김철연 교수님 강의 3주차 정리

Terminology Theorem (정리) : 참이라는 것을 보일 수 있는 진술, 증명의 대상 Axiom (공리) : 우리가 진실이라고 가정하는 진술, 증명의 대상이 아님 Lemma (보조정리) : 참이라는 것을 보일 수 있는 진술 중 중요도가 낮은 것, theorem 증명 간소화하기 위해 중간에 미리 정리 Corollary : 참이라는 것을 보일 수 있는 진술 중 증명이 필요 없는 것, theroem을 보면 자동적으로 알 수 있는 것 Conjecture : 아직 증명되지 않은 것 중 참이라고 가정하는 진술 → Axiom - Theorem(중요), Lemma, Corollary - Conjecture Methods of Proving Theorems Direct Proof (직접 증명법) : 조건 명제..

[이산수학] KOCW 가천대학교 김철연 교수님 강의 2주차 정리

Quantifiers Predicates에 대한 T/F를 알 수 있음 All → A 거꾸로 / E 뒤집어서 Universal quantification: VxP(x) → 모든 x에 대해서 참인가? Existential quantification : ExP(x) → 어떤 x에 대해서 참인가? quantifier가 다른 모든 논리연산자보다 우선순위가 높다 Valid Arguments 주어진 사실로 새로운 사실을 깨닫는 것 Premises (p1, p2, …, pn-1) 전제 Conclusion (pn) 결론 모든 전제가 사실일 때 결론도 사실이다 Rules of Inference Inference : 이미 알고 있는 것으로 새로운 사실을 찾는 것 p + p→q = q ㄱq + p→q = ㄱp p→q + →r..