본문 바로가기

Programming

(22)
[코테준비] 입문자를 위한 알고리즘 해결전략 - 2 프로그래머스 > 해시 > 전화번호 목록 큰 그림 시간 복잡도 O(n^2) 테스트 1,5,6,7,11 실패 & 효율성 성공 => ["123", "01230"]에서 java.lang.StringIndexOutOfBoundsException: begin 0, end 5, length 3 에러가 뜬다. 왠지 소트를 할 때 기준을 문자열 자릿수가 아닌, 숫자 값으로 정수 비교를 한 것 같다...? 소팅 결과가 분명 01230, 123 이렇게 되었기 때문에 저 에러가 뜬 것이 분명하다. 벽을 넘자 그래서 sort를 문자열 길이 기준으로 할 수 있을까 생각을 해서 구글링을 해보았는데 compare로 사용자 정의 메서드를 이용해서 만들어야 해서 복잡해질뿐더러, 내가 원하는 기능을 추가하는 것이 제한시간 안에 구현하는 ..
[코테준비] 입문자를 위한 알고리즘 해결전략 - 1 프로그래머스 > 해시 > 완주하지 못한 선수 큰 그림 앞으로 문제풀이를 할 때 다음의 절차를 따르려고 한다 (TDD 방식과 비슷) 1. 문제를 풀기전에 종이에 문제해결을 위한 스케치를 한다. 1-1. 큰그림을 그린다 1-2. 벽을 세운다. 1-3. 의문을 세운다. 2. 코딩을 시작한다. 2-1. 큰그림을 구현한다. 테스트 케이스를 돌려서 큰그림 테스트를 통과, 벽에 대한 테스트 케이스가 실패함을 확인한다. 처음에는 무조건 테스트에 실패한다. 2-2. 벽을 넘는다. 2-3. 의문을 해결한다. 3. 제출한다. 큰그림 : 문제를 푸는 큰 틀이자 뼈대. 고양이를 그릴 때 전체적인 고양이 골격을 그리는 것을 의미. 스케치를 해 나갈 때, 고양이의 머리 -> 몸통 -> 다리 순으로 그려나가는 것이 아닌, 고양이 뼈..
CI/CD - 위대한 자동화의 힘 프로젝트 링크 TimJLee/Lets-boot Side project_ 스프링부트로 게시판 만들고 무중단 배포까지. Contribute to TimJLee/Lets-boot development by creating an account on GitHub. github.com 들어가기에 앞서 이번에 사이드 프로젝트로 스프링 부트와 AWS 를 이용하여 간단한 게시판을 구현해 보았다. 서버개발캠프에서 다른 팀이 사용한 CI/CD 툴 중 travis CI, CodeDeploy를 보고 처음에 '저건 뭐지? 나도 한번 써보고 싶다.' 라는 생각이 들었고, 캠프가 끝나자마자 이에 대해 공부하기 시작했다. 처음에는 왜 사용하는지 잘 이해가 가지 않았다. 빌드를 자동화 한다는 건 무엇이고, 배포를 자동화한다는 건 또 무..
[Spring/이벤트 기반 아키텍쳐]메시지 큐란? 1) 메시지 큐 메신저의 특성상 사용자가 많아지게 되면, 채팅의 양이 늘어남에 따라 대용량 데이터가 실시간으로 전달되는 상황이 오게 된다. 기존의 동기식 요청-응답 방식으로 이를 구현하게 되면 발생하는 많은 문제점들을 해결하기 위해 비동기식 발행-소비 방식인 메시지 큐를 사용하기로 결정하였고 이에 대해 학습하는 시간을 가졌다. 2) 왜 메시지 큐를 써야하는가? - 동기식 요청-응답 방식 채팅 시스템을 동기식 요청-응답 방식으로 처리하게 되면, 끊임없이 메시지를 주고받는 채팅시스템에 유연하게 대처하지 못하게 된다. 수백명의 사람이 채팅방에 들어와 있을 때, 한 사람의 네트워크 상태가 좋지 않아서 그 사람이 보낸 메시지가 제대로 처리되지 않고 있는 상황이 발생하면 이로 인하여 나머지 수백명의 사람이 해당 메..
[자료구조]스택,큐로 이해하는 DFS,BFS DFS & BFS 란? 깊이우선 탐색, 너비 우선 탐색의 약자이다. 이진트리를 완전탐색하는 두가지 방법론이다. 스택으로 이해하는 DFS 이제까지는 재귀호출로 DFS 를 이해해왔고, BFS 가 큐로 이루어진것을 이해했다. DFS 를 스택으로 구현해보기도 했지만, 정확히 그 동작원리를 알지 못했었다. 때마침 오늘 학교강의를 들으며 이 부분에 대해 교수님이 설명해 주셔서 글로 남긴다. 스택은 LIFO(Last in First out), 큐는 FIFO(First in First out) 으로 동작한다. DFS by stack 왼쪽이 스택의 bottom, 오른쪽이 스택의 top 이다. BFS by queue 왼쪽이 큐의 front이다. 코드로의 구현 기존에 DFS 를 재귀적으로 이해했었고 그렇게 코딩해왔었다. 이..
[SNS프로젝트 회고]RDBMS vs NOSQL [개요] 스마일게이트 서버개발캠프에서 프로젝트를 기획하는 도중 DB를 어떤 것을 사용 할 것인가에 대한 선택사항에 마주하게 되었다. MySQL, Oracle 같은 RDBMS 를 사용 할 것인가? 아니면 MongoDB 와 같은 NoSQL 을 사용할 것인가? Node.js 를 사용하는 사람들은 MongoDB(NoSQL)를 많이 사용한다고 하고, 단점도 있다고 하고.. 각각의 특징과 장단점에 대해 알아보고 우리의 sns 프로젝트에 적용할 적합한 db 를 선택해 보고자 한다. 우리는 알림 db 에는 nosql(mongodb)을 적용하고, 유저 db에는 mysql 을 적용하였다 RDBMS(SQL) - 관계형 데이터베이스 SQL 은 '구조화 된 쿼리 언어(Structured Query Language)'의 약자이다..
.gitignore 사용법 정리 .gitignore 이란? 깃에서 특정 파일 혹은 디렉토리를 관리 대상에서 제외할 때 사용하는 파일이다. 이 파일 안에 기입된 내용들은 모두 깃에서 관리하지 않겠다는 것을 의미함. 예를 들어 자동으로 생성되는 로그파일, 프로젝트 설정 파일과 같이 외부에 노출되면 안되는 파일을 관리 대상에서 제외함으로써 github 에 노출되지 않는다. 최상위 디렉토리 이외에 어떤 디렉토리 안에 있던 간에 해당 파일 무시하는 방법 **/*.docs -- 모든 디렉토리(실험결과 최상위 디렉토리도 포함임.) 아래 .docs 확장자 파일 커밋에서 제외 *.docs -- 최상위 디렉토리 아래 .docs 확장자 파일 커밋에서 제외 name.py -- 최상위 디렉토리 아래 name.py 파일 커밋에서 제외 data/ -- data ..
과정지향적인 개발자가 되자 돌아보며 이번 방학동안 진행한 서버개발캠프에서 팀원들과 프로젝트를 진행하는 과정 속에서 나의 아집을 버리고 팀원들을 믿고 꾸준히 소통하는 것이 효율적인 팀빌딩임을 깨닫게 되었다. 개발을 진행하면서 참고했던 수많은 기술블로그들과 서적들을 보면서 단기간에 몰아치는 개발이 아닌 꾸준히 고민하며 개발하는 것이 중요함을 알았다. 이번 달에는 이동욱님께서 쓰신 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'와 '커리어 스킬(존 손메즈 저)' 그리고 '스프링 퀵 스타트' 를 보면서 체계적인 학습을 할 수 있었다. 이전까지는 기술 블로그를 참조하면서 필요한 기능들에 대해서 학습하고 적용하였는데(대부분 구글링) 반해 이번 달에는 코로나로 인해 학교강의가 온라인이 되어서 많은..