분류 전체보기
Request Body 받아오기
Client가 Server로 혹은 Server가 Server로 Request를 할 수 있다. 이번 포스팅에서는 Request가 왔을 때 Body를 String과 Json방식으로 받아오는 두가지 방법을 확인하겠다. 김영한님의 MVC 강의를 수강 후 작성된 포스팅이다. 1. Body가 String인 경우 Servlet의 모든 기능을 지원하기 때문에 Servlet처럼 받는 것도 가능하다. 하지만 이 경우 불필요하게 HttpServletRequest를 모두 받아야하므로 비효율적이다. 따라서 원하는 부분만 받아서 실행할 수 있다. @PostMapping("/request-body-string") public void requestBodyString(InputStream inputStream, Writer resp..
Request Parameter 가져오기
도입 Spring MVC는 굉장히 편리하게 Request Parameter를 받을수 있다. 과거 Servlet에서는 HttpRequest 객체로부터 getParameter를 받았던 것과 유사하게 받을 수도 있고, 더욱 편리하게 받을 수 도 있다. 이번 포스팅에서는 Servlet에서 Parameter를 받는 것을 시작으로 Spring MVC가 편리하게 받는 방법까지 알아보도록 하겠다. Request Parameter 받는 방법 1. Servlet처럼 받기 @RequestMapping("/request-param") public void requestParam(HttpServletRequest request, HttpServletResponse response) throws IOException { Stri..
[Backjoon_4375] 1 (Java)
문제 링크 https://www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 문제 요약 더보기 더보기 더보기 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성한다. 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. 1로 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다. 시간 제한 1초 메모리 제한 128MB 문제 풀이 n을 입력받아 n의 배수중 1로만 이루어진 가장 작은..
브루트포스(3) 순열
순열 순열(Purmutation)은 숫자를 사전순으로 나열한 것을 의미한다. 더보기 Ex) 1,2,3 순열 1 2 3 -> 시작 순열(오름차순) 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 -> 끝 순열(내림차순) 순열은 시작지점, 끝지점, 다음 순열,이전 순열로 표현할 수 있다. 시작순열과 끝 순열을 각각 오름차순과 내림차순으로 구성된다. 다음 순열 순열의 다음을 구하는 방법이다. 끝순열을 구해서 그 다음 구해주어 해결한다. private boolean nextPermutation(int[] numbers){ int prevIndex; int n = numbers.length; int nextIndex = n-1; int changeIndex = -1; for(int i = n-2; i >= ..
브루트포스(2) 재귀
재귀를 쓰면 재귀를 쓰면 모든 경우의 수를 확인하도록 만들 수 있다. 재귀를 써서 모든 경우를 확인하는 경우는 두가지이다. 1. 순서가 있는 경우(P) n개의 수를 나열하는 방법의 수이다.(중복가능) -> O(n!) /** * index -> 현재 수를 놓는 위치 * arr -> 확인하려고 만드는 배열 */ public void recursive1(int index, int[] arr){ if(index == arr.length){ //종료 조건 } for(int i = 1; i O(2^n) /** * index -> 현재 수를 놓는 위치 * arr -> 확인하려고 만드는 배열 */ public void recursive2(int cnt, int[] arr, int value, int n){ if(ind..
브루트포스(1) - 무작정 해보기
브루트 포스 알고리즘 모든 경우의 수를 해보는 알고리즘이다. 무작정 반복문을 돌려 구할 수도 있다. 브루트포스 알고리즘 예시 문제 : n이 주어졌을때, 1부터 n 중에 2의 배수의 수는? (1
최대, 최소공배수 그리고 소수
최대공약수(GCD) 두 수 a,b의 공통된 약수중 가장 큰 수 - 구하는 방법 1. 2부터 시작해서 a,b로 공통되게 나누어 떨어지는 것중 최대값을 구한다. O(n) -> n은 a,b중 최소값 2. 유클리드 호제법을 사용하기 // 나는 주로 재귀를 사용하는 편 public int gcd(int a, int b){ if(a%b == 0) return b; return gcd(a,a%b); } //반복문을 사용하여 구할수도 있음 public int gcd(int a, int b){ int temp; while(true){ if(a%b == 0) return b; temp = a % b; a = b; b = temp; } } 위 코드는 유클리드 호재법을 사용해서 구현해본 코드이다. 최소공배수(LCM) - 최소..
약수
약수를 구하는 방법 1. 1부터 n까지 %연산을 활용하여 구하기 2. 1부터 루트n까지 %연산을 활용하여 구하기 루트n까지만 비교해도 되는 이유는 약수는 짝을 지어 있기 때문이다. 약수의 개수가 홀수일 경우 root를 씌어준 값이 약수가 된다.(루트n까지 확인해야한다.) 시간복잡도 1번 방법 : O(n) 2번 방법 : O(√n) // 1번 방법 O(n) int n = 121; for(int i = 1; i
수학 - Mod연산
Mod 연산 나머지 연산의 특징 (A + B) % C == ((A % C) + (B % C)) % C (A * B) % C == ((A % C) * (B % C)) % C (A - B) % C == ((A % C) - (B % C) + C) % C 나누기 연산을 제외하고는 분배법칙 처럼 Mod를 처리하고 사용 가능하다. (주의사항) '-' 연산일 경우 범위는 -C
스프링 빈 등록방법과 사용예시
Spring Bean이란? Spring의 Bean은 Spring IOC Container가 관리하는 객체들을 의미합니다. 따로 new 연산을 통해 객체를 생성하지 않아도 되고, Spring IOC Container에게 알려주기만 하면 객체를 만들어 사용해 줍니다. Spring Bean을 사용하면 여러 클래스에서 따로 new연산을 하여 동일한 여러 객체를 만들 필요도 없어 메모리 활용에 효과적입니다. Spring IOC Container에서 가지고 있는 동일한 인스턴스만 사용하기 때문에 많은 이점을 얻을 수 있습니다. 그렇다면 이번 시간에는 Spring Bean에 등록하는 방법을 알아보도록 하겠습니다. Spring Bean 등록 방법? 등록하는 방법은 크게 두가지가 있습니다. Component Scan 직..
Test Case 만들기
이번 포스팅에서는 서비스를 생성하고, 동작이 원활히 수행되는지 테스트를 해야합니다. main 메소드를 사용하여 출력하기 직접 DB에 넣고 실행해보기 등등 다양한 방법으로 테스트를 할 수 있습니다. 이번 시간에는 Spring으로 Service를 만들며 굉장히 편리한 Test Case를 활용하여 테스트를 수행하는 방법을 알아보도록 하겠습니다. Test Case test파일에서 Class를 생성하여 주시고 작업을 수행하면 됩니다. 메소드에 @Test라는 anotation만 붙여주고 사용하면 됩니다. 예시로 간단한 스펙의 서비스를 만들어보겠습니다. public int join(Member member) { nameCheck(member); repository.save(member); return member.g..
ADsP 시험준비 3과목 데이터분석(1)
01. R 기초 1. R 언어와 문법 *주석 : # 이후에 작성 1) R의 데이터 구조 ) (출처 R in Action(23p)) 2) 벡터 벡터 데이터구조는 하나의 스칼라 값, 혹은 하나 이상의 스칼라 원소를 갖는 자료구조이다. 벡터는 자바에서 사용하는 일차원 배열과 느낌이 비슷하다. 그 이유는 동일한 데이터 형태를 가진 원소들의 집합이기 때문이다. 벡터 생성하는 법 : c() 벡터의 원소 유형 숫자형 벡터 문자형 벡터 논리 연산자 벡터 사례 x = c(1,2,3,4) y = c(“사과”,”망고”) z = c(TRUE, FALSE) 여기서 알아 두어야하는 것은, TRUE를 숫자로 사용하면 1, FALSE는 0이 된다는 것이다. 그리고 논리값은 항상 모두 대문자로 사용해야한다. 서로 다른 유형의 데이터를..
ADsP 시험준비 2과목 데이터 분석 기획(2)
01. 분석 마스터플랜 수립 분석 마스터플랜은 분석 대상이 되는 과제를 도출하고, 우선순위를 계산하여 세부 이행 계획을 수립하는 로드맵을 작성하는 것을 의미한다. 또한 분석 로드맵상의 과제가 잘 수행되기 위하여 분석 거버넌스의 체계를 수립하는 것을 의미한다. 1. 분석 마스터플랜 수립 프레임 워크 중 장기적인 관점의 마스터플랜을 수립하기 위해서 분석과제를 대상으로 전략적 중요도, 비즈니스의 성과 및 ROI(투자 회수율), 분석과제의 난이도 등의 다양한 기준을 고려해 우선순위를 선정해야한다. 그 외에 분석 데이터를 내부 데이터를 사용할지 혹은 외부 데이터를 사용할지, 분석 기술은 어느 기술 요소까지 적용할 것인지 등 분석의 적용 범위 및 방식에 대하여도 종합적으로 고려해 로드맵을 수립해야한다. (마스터플랜..
ADsP 시험준비 2과목 데이터 분석 기획(1)
01. 분석 기획 방향성 도출 1. 분석 기획의 특징 분석 기획은 실제 분석을 수행하기 전에 분석을 수행할 과제의 정의 및 원하는 결과를 얻을 수 있도록 이를 적절히 관리할 수 있는 관리방안을 계획하는 작업이다. 어떠한 목표(What)을 달성하기위해 어떠한 방법(How)을 수행할 지 일련의 계획을 수립하는 과정이다. 분석을 기획하기 위해서는 해당 문제 영역에 대한 ‘전문성 역량’ 및 통계학적 지식을 활용한 ‘분석 역량’ 그리고 분석의 도구인 ‘프로그래밍 분석 역량’에 대해 균형 잡힌 시각을 가지고 방향성 및 계획을 수립해야 할 것이다.(비즈니스 분석 능력 + 통계학 지식 + 데이터 프로그래밍 능력 = 데이터 사이언스) 1) 분석 주제 유형 분석의 대상과 분석의 방법을 아는지에 따라서, 4가지의 유형으로 ..
ADsP 시험준비 1과목 데이터의 이해(3)
01. 빅 데이터 분석과 전략 인사이트 1. 왜 싸이월드는 페이스북이 되지 못하였는가? 구글이나 페이스북 같은 성공적인 인터넷 기업은 대부분 데이터분석과 함께 시작되며 그 결과가 의사결정에 결정적인 정보를 제공한다. 반면 싸이월드는 직관에 의거하여 의사결정을 수행하였다. 즉 데이터 분석을 활용하여 전략적 통찰을 얻고, 효과적인 의사결정을 수행하지 않았기 때문이다. 2. 빅 데이터 분석, “Big”이 핵심이 아니다. 데이터가 많다고 해서 항상 더 많은 가치를 창출하는 것은 아니다. 다만 데이터는 음성, 텍스트, 영상 등으로 다양하게 발전하고 있다. 이렇게 새롭고 다양한 유형의 데이터를 효율적으로 활용하면 더 많은 핵심 가치를 얻을 수 있을 것으로 기대된다. 즉 빅 데이터의 핵심은 양이 아니라 유형의 다양성..
ADsP 시험준비 1과목 데이터의 이해(2)
01 빅데이터의 이해 1. 빅 데이터의 정의 빅데이터는 소프트웨어로 저장, 관리, 분석할 수 있는 범위를 초과하는 규모의 데이터이다. 빅 데이터는 3V의 정의를 가진다. Volume (데이터의 크기) : 생성되는 데이터가 매우 많음 Variety (데이터의 다양성) : 데이터의 종류가 비정형 데이터처럼 다양해짐. Velocity (데이터의 속도) : 데이터를 업데이트하거나 분석이 빠르게 됨. 2. 출현 배경 (산업계) 고객의 데이터를 축적해 숨어있는 가치를 발굴해 새로운 성장 동력원으로 만들어 냄 (학계) 거대 데이터 활용 과학이 확산됨(인간 게놈 프로젝트) (관련 기술의 발전) 인터넷 보급, 모바일 혁명, 클라우드 컴퓨팅의 발전 (*데이터의 규모) 1테라 바이트 = 1024 기가 바이트 1페타 바이트 ..
ADsP 시험준비 1과목 데이터의 이해(1)
요약에 앞서 포스팅을 진짜 오랜만에 하는 것 같습니다. 최근 코로나 바이러스 때문에 집에 못가고 계속 OBC 생활을하며 지내느라 포스팅이 늦어졌습니다.. 언제까지 갖혀있을지 모르겠지만.. 빨리 상황이 좋아지길 기대합니다. 지금도 여전히 정보통신학교에 갖혀있지만, 자격증 시험 준비를 하며 요약정리를 할 겸 글을 쓰게 되었습니다. 저 처럼 ADsP자격증을 준비하는 분들이 이 글을 보고 조금이나마 도움을 받기를 기대합니다. 참고로 책은 아래 두 권을 활용하여 공부하는 중입니다. 위 책은 개념을 정리하고 문제를 풀 용도로 구매하였습니다. (아직 풀어보지는 못하였지만, 굉장히 유익하다는 평이 많습니다.) 개념을 정리할 개념서로 위 책을 구매하였습니다. 01. 데이터와 정보 1. 데이터의 정의 데이터는 객관적인 사..
머신러닝이란?
머신러닝이란? 알파고를 기점으로 인공지능에 대하여 많은 관심을 받고 있습니다. 머신러닝은 이러한 인공지능의 범주 안에 있는 하나의 기술이라고 보시면 됩니다. 과거의 인공지능은 규칙 기반으로 조건문을 활용한 하드코딩을 통해 개발이 되었습니다. 이는 특정 분야에 대해서는 인공지능이 상당히 좋은 결과를 보여주지만, 새로운 예외적인 상황이 나오면 가차없이 틀리는 문제를 일으킵니다. 오늘날의 인공지능은 데이터를 통하여 직접 학습하여 일반화된 지식을 통해 문제를 접근합니다. 이렇게 되면 새로운 상황에 접하게 되어도 그 동안 쌓아온 지식을 통해 일반화된 접근을 통해 올바른 선택을 할 수 있게되죠. 이것이 우리가 지금부터 논할 머신러닝이라는 것 입니다. 이로써 우리는 과거의 인공지능으로는 풀 수 없던 여러가지 문제를 ..