본문 바로가기
반응형

전체 글145

점근적 분석, 점근적 표기법, 시간 복잡도, 공간 복잡도 시간 복잡도 알고리즘의 연산 수에 따른 수행시간 공간 복잡도 알고리즘이 소요 하는 메모리의 사용량 점근적 분석을 해야 하는 이유 문제를 알고리즘으로 푸는 방법은 하나만 있지 않고 다양한 방법이 있습니다. 다양한 방법과 하드웨어 및 상황에 따라 성능이 좌지우지 됩니다. 문제를 해결하는 알고리즘이 최적의 성능을 낼 수 있는지 확인 할 필요가 있습니다. 점근적 분석이란 입력 되는 데이터의 크기에 따라 수행 시간과 공간을 얼마나 차지하는지를 측정합니다. 이를 통해 효율적인 알고리즘인지를 판단합니다. 정확한것은 아니고 대략 이런식으로 수행시간이 나온다라는걸 측정하는 용도로 사용합니다. 측정의 용도로 사용하기에 최악의 경우를 측정 할 수 있는 빅오 표기법을 주로 사용합니다. 복잡도를 표현하는 방법으로 O(빅오), .. 2021. 4. 21.
점화식이란 recurrence relation · 漸化式 수학에서 점화식(漸化式) 또는 재귀식(再歸式, 영어: recurrence relation)이란 수열에서 이웃하는 두개의 항 사이에 성립하는 관계를 나타낸 관계식이다. 어떤 수열의 각각의 항들의 관계를 나타낸 식이다. 점화식을 만족하는 수열을 점화식의 해라 하고, 이 해를 찾는 것을 점화식을 푼다고 말한다. 벡터, 행렬 등 다른 수학적 대상의 열을 묘사하는 점화식들도 생각할 수 있고, 마치 파스칼의 삼각형 항등식처럼 2개 이상의 변수를 갖는 수열에 대해서 생각할 수도 있다. 보통 점화식은 n번째의 항을 이전에 나온 항들로 나타내는 공식으로 나타나고, 이 점화식을 만족하는 수열은 초깃값에 따라 유일하게 결정된다. 이렇게 수열을 정의하는 것을 수열의 귀납적 정의(.. 2021. 4. 21.
[프로그래머스] 스택/큐 주식가격 JAVA 자바풀이 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 pricesreturn [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이.. 2021. 4. 18.
[프로그래머스] 깊이/너비 우선 탐색(DFS/BFS) 프로그래머스에서 알고리즘 문제를 하나 풀었는데 깊이/너비 우선 탐색(DFS/BFS) 와 관련된 문제였다. 아래와 같이 재귀적으로 풀어내는 문제였는데 깊이 너비 우선탐색에 대해서 좀 더 자세히 알아보고 싶어졌다. class Solution { public int solution(int[] numbers, int target) { int answer = 0; answer = dfs(numbers, 0, 0, target); return answer; } int dfs(int[] numbers, int n, int sum, int target) { if(n == numbers.length) { if(sum == target) { return 1; } return 0; } return dfs(numbers, n.. 2021. 4. 17.
String.format("%%%ds*\n", (i * 4) + 3), "") 코드 해석 Do it 자료구조와 함께 배우는 알고리즘 자바편 공부중 아래 코드가 생소해서 검색해보았다 String.format("%%%ds*\n", (i * 4) + 3), ""); String.format은 알고있었지만 %%% 이렇게 %가 세개가 있는 코드는 처음봤다. 검색해보니 %%가 format함수 안에서는 %로 인식된다고 한다. 만약 위에서 i가 2라면 i*4+3은 11이다. %%%ds*\n 에서 먼저 %d에 우측에서 계산한 결과값을 넣으면 String.format("%%11s*\n, ""); 가 된다 논리적으로는 %11s*\n 와 같아진다. 즉 아무 글자도 없는 String인 ""를 11글자의 넓이에 맞춰서 형식을 맞춰준 후 *을 하나 찍어주고 엔터를 친다. 결과적으로 아래와 같은 모양으로 현재 위치를 *.. 2021. 4. 17.
[자료구조] 배열과 리스트 데이터 집합이 있을때 검색만 하면 된다고 생각한다면 검색에 사용할 알고리즘은 계산 시간이 가장 짧은것을 선택하면 된다. 그러나 데이터 집합에 대한 검색뿐아니라 데이터의 추가, 삭제 등을 자주하는 경우라면 검색 이외의 작업에 소요되는 비용을 종합적으로 평가하여 알고리즘을 선택해야 한다. 리스트는 포인터를 사용해 자료를 순차적으로 저장하는 선형 자료구조를 말한다. 실제로 배열과 리스트의 차이는 속도와 자료의 크기에서 나타난다. 배열은 기본적으로 인덱스로 자료를 찾기 때문에, 자료의 삽입, 삭제, 검색에서 리스트보다 무조건 빠르다. 하지만 고정된 데이터 크기 때문에 메모리의 낭비가 심하다는 단점이 있다. 리스트는 고정된 크기 없이 포인터로 자료들을 연결하기에, 자유자재로 데이터의 크기를 바꿀 수 있다. 하지만.. 2021. 4. 17.
Entity, DTO와 VO의 차이 예전에 했던 자바 콘솔 프로그램을 복습하면서 포트폴리오를 만들고있다. 스프링에서는 VO라고 쓰는 클래스를 자바에서 콘솔만으로 프로그램을 만들때는 DTO라고 썼었다. 당시 강사님께 뭐가 다른건지 질문을 했었지만 명확한 답변은 듣지 못했거나 기억이 나지 않고, 비슷하게 사용한다고만 이해하고 넘어갔었다. 갑자기 궁금해서 Entity는 무엇인지, DTO와 VO의 차이점에 대해 검색해보았다. Entity Entity 클래스는 DB의 테이블내에 존재하는 컬럼만을 속성(필드)으로 가지는 클래스를 말합니다. 엔티티 클래스는 상속을 받거나 구현체여서는 안되며, 테이블내에 존재하지 않는 컬럼을 가져서도 안됩니다. RDB(Relational DataBase, 관계형 데이터베이스)에서의 Entity(개체)란, 현실세계에서의 .. 2021. 3. 9.
AWS EC2 ubuntu카카오맵, 지메일 GMAIL SMTP 발송 문제 해결 localhost에서 잘돌아가던 스프링 프로젝트의 카카오맵과 지메일이 우분투 ec2에서 돌리니 안되는 문제가 있었다. 1. 카카오맵 오류 해결 1) 도메인 확인하기 : 이걸 너무 오래전에 해놔가지고...ㅋㅋㅋ 도메인을 등록해야 하는 것을 까먹었다... 이것저것 뒤지다가 설마? 하고 카카오맵 개발자사이트에 들어가서 확인해보니 localhost만 등록이 되어있었다...ㅋㅋㅋ 새로운 도메인을 등록하니 잘 되었다. (애꿏은 포트만 쥐잡듯이 잡았네... 포트둥절) 2) 스크립트의 위치 확인 그렇게 잘 하다가 css쪽 인식이 안되는게 많길래 스크립트 부분 위치를 모두 바로 위쪽으로 일괄조정하였다. 그 뒤로 갑자기 또 카카오맵이 안되기 시작. 아래와 같은 카카오 스크립트만 head로 옮겼더니 잘 동작했다. 3) 앱 .. 2021. 2. 26.
AWS EC2 도메인 https로 연결하기 (SSL/TLS 인증서, 로드 밸런서, 443 포트) 폰트 적용 안될때 갑자기 http https로 설정하는거에 꽂혀서 꼬박 하루가 걸렸다... 우선 AWS의 AWS Certificate Manager에서 인증서를 받아 나의 도메인과 연결된 ROUTE53에 등록하고 EC2의 로드밸런서에 내 인증서를 등록하고 80포트, 443포트를 연결했다. 그 후 80포트(http)로 들어오는 요청을 https로 리다이렉트 했다. 이제 http://mydomain.com 으로 들어오는 요청은 https://mydomain.com 으로 자동으로 연결된다. 하지만 왜인지 http://www.mydomain.com 으로 들어오는 요청은 https로 넘어가지 않는다. 그리고 https에서는 내가 적용해놓은 예쁜폰트들이 다 기본폰트로 보인다ㅠㅠ 내가 프로젝트 내에서 폰트를 import 할때 http.. 2021. 2. 25.
tomcat localhost:80 포트를 8080 또는 9090 포트로 연결하기 (apt-get 에러) AWS EC2 우분투로 스프링 웹사이트를 배포하는 중이다. 나의 경우 localhost:9090 으로 톰캣서버를 연결해 놓았는데 도메인을 구매하여 설정하고나니 domain.com:9090 으로 접속해야만 연결이 된다. 그래서 80포트로 들어오면 바로 9090포트로 연결할 수 있도록 아래와 같이 조치하였다. sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 9090 sudo iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 9090 sudo iptables -A INPUT -i eth0 -p tcp --dport 9090 -j ACCEPT 이렇게 하면 .. 2021. 2. 24.
반응형