개발146 [Python] 백준 10992 별 찍기 #10992 별찍기 import sys N = int(sys.stdin.readline()) for i in range(1, N+1): if i == N: print('*'*(2*i-1)) # 이런 규칙을 생각해내는 것이 중요할 듯 elif i == 1: print(' '* (N-i), '*', sep = '') else: print(' '*(N-i),'*',' '*(2*i-3),'*',sep = '') 개발/Algorithm 2021. 11. 7. [Spring] HikariCP ? 먼저 DB connection pool에 대해 알아보자 사용자의 요청에 따라 무수한 Connection을 생성하다보면 서버에 과부하가 걸리게 된다. 이러한 상황을 방지하기 위해 미리 설정해놓은 일정수의 Connection을 만들어 놓고 이것을 Connection Pool에 보관해두었다가 요청이 발생하면 제공을 해주고 Connection의 사용이 끝난다면 다시 Connection Pool에 반환하여 보관하는 기술을 DB Connection Pool이라고 한다. 이러한 DB Connection Pool을 사용한다면 다음과 같은 장점이 있다. DB접속 설정 객체를 미리 만들어 연결하여 메모리 상에 등록해 놓기 때문에 클라이언트가 빠르게 DB에 접속 가능 DB Connection 수를 제한 할 수 있어서 과도한.. 개발/Java 2021. 11. 7. [Java] Junit이 뭘까.. Junit이란 Java에서 독립된 단위테스트(Unit Test)를 지원해주는 프레임워크이다. 어노테이션 종류 @Test @Test가 선언된 메서드는 테스트를 수행하는 메소드가 된다. jUnit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을 원칙으로 @Test마다 객체를 생성한다. @Ignore @Ignore가 선언된 메서드는 테스트를 실행하지 않게 한다. @Before @Before가 선언된 메서드는 @Test 메서드가 실행되기 전에 반드시 실행되어진다. @Test메서드에서 공통으로 사용하는 코드를 @Before 메서드에 선언하여 사용하면 된다. @After @After가 선언된 메서드는 @Test 메소드가 실행된 후 실행된다. @BeforeClass @BeforeClass 어노테이션은 @.. 개발/Java 2021. 11. 7. [Spring] Maven, Gradle 차이를 알아보자 우선 둘의 차이를 알기위해 각각 알아보았다. Maven같은경우는 스프링프로젝트에서 pom.xml이란 이름으로 쓰고, Gradle은 스프링부트, 안드로이드에서 쓰는걸로 알고있다. 처음에 단순히 알기전엔 Maven같은 도구는 그저 라이브러리를 쉽게 Maven Repository에서 받아오기위해 사용하는건줄 알았지만 아니었다. 물론 쉽게 받아올 수 있지만 그 외에도 다른기능이 많았다. Maven이란? 프로젝트를 진행하게 되면 단순히 자신이 작성한 코드만으로 개발하는 것이 아니라 많은 라이브러리들을 활용해서 개발을 하게 된다. 이 때 사용되는 라이브러리들의 수가 수십개가 훌쩍 넘어버리는 일이 발생해 이 많은 라이브러리들을 관리하는 것이 힘들어지는 경우가 종종 발생하곤 한다. Maven은 이러한 문제를 해결해 줄.. 개발/Java 2021. 10. 31. [Python] 이진 탐색 정렬된 자료를 반으로 나누어 탐색하는 방법 주의점 : 자료는 오름차순으로 정렬된 자료여야 한다. 이진트리, 이진탐색은 코딩 인터뷰 단골 문제 이진 탐색은 O(log N)의 속도로 검색 가능 구현을 위한 준비 target : 찾고자 하는 값 data : 오름차순으로 정렬된 list start : data의 처음 값 인덱스 end : data의 마지막 값 인덱스 mid : start, end의 중간 인덱스 구현개요 배열 전체의 중간 값을 target 값과 비교 중간 값이 target 값보다 큰지, 작은지에 따라 왼쪽, 오른쪽 반 선택 그 부분의 중간 값을 또 target과 비교 (반복) def binary_search(array,target,start,end): while start target: # 배열의.. 개발/Python 2021. 10. 26. 그리디 알고리즘이란? 그리디 알고리즘은 그리디 알고리즘은 탐욕 알고리즘 또는 욕심쟁이 알고리즘이라고도 불리는데, 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법이다. 이렇게 각 단계에서 최선의 선택을 한 것이 전체적으로도 최선이길 바라는 알고리즘이라고 할 수 있다. 코딩 테스트에서 자주 나오는 유형이므로 연습하는 것이 좋다. 개발/Algorithm 2021. 10. 26. [Git] fatal: remote origin already exists.오류 해결 git remote add origin 주소값 을 입력하면 fatal: remote origin already exists. 오류가 뜬다. 그런 경우에는 git remote rm origin 을 입력 후 다시 진행해주면 해결된다!! 개발/etc 2021. 10. 26. 빅 오 표기법 (Big - O notation) 빅오 표기법은 점근적 묘사 방법으로 , 대문자 O에 괄호를 하고 안에 계수를 뺀 차수가 가장 큰 항을 넣어주면 된다. 시간 복잡도의 효율성이 좋은 순으로 나열하면, 이렇게 나열이 가능하다. 이것을 그래프로 보면, 이렇게 기울기가 많이 차이나는 것을 볼 수 있다. 빅오 표기법의 대표적인 예는 다음과 같다. O(1) : 스택에서 Push,Pop O(log n) : 이진트리 O(n) : for 문 O(n log n) : 퀵 정렬, 병합 정렬, 힙 정렬 O(n^2) : 이중 for문, 삽입정렬, 거품정렬, 선택정렬 O(2^n) : 피보나치 수열 개발/Algorithm 2021. 10. 19. [Java] 메소드 호출, 객체 생성 메소드 호출 - 리턴값 = 전자계산기객체.메소드(매개값1, 매개값2, ...); ⇒ int result = Calculator.add(10, 20) 매개값은 메소드를 실행하기 위해 필요한 데이터이다. 객체 생성 - 객체 생성은 간단하게 new 클래스(); 로 생성한다. 여기서 new는 클래스로부터 객체를 생성시키는 연산자이고, 그 뒤에는 생성자가 오는데 그 생성자는 클래스()의 형태를 갖는다. 클래스 변수 선언과 객체 생성을 한 문장으로 작성하자면 클래스 변수 = new 클래스(); ⇒ Student stu1 = new Student(); 처럼 작성이 가능하다. 이 경우엔 stu1 변수가 Student 객체를 참조한다고 볼 수 있는 것이다. 변수의 개수만큼, 즉 new 연산자를 사용한 만큼 Student.. 개발/Java 2021. 10. 19. 큐 / enqueue, dequeue 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 FIFO(Fisrt-In,Fisrt-Out) , LILO(Last-In,Last-Out) 방식으로 스택과 꺼내는 순서가 반대. 알아둘 용어 Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 기본적으로 파이썬에서는 import queue를 이용해 큐를 만들 수 있다. 그러나 다른 방법으로 만들어 보자. queue_list = list() def enqueue(data): queue_list.append(data) def dequeue(): data = queue_list[0] del queue_list[0] return data #enqueue, dequeue 함수 정의 for index in range(10):.. 개발/Algorithm 2021. 10. 17. [Java] 스프링 - DI, AOP / MVC 패턴 / MVP 패턴 DI(Dependency Injection) - 의존성주입 AOP(Aspect-Oriented Programming) - 관심지향 프로그래밍 DI : 객체에 속성값을 주입하는 방식으로, 모듈간의 결합도를 낮추어 유연한 코드를 작성하게 해주는 역할을 함 AOP : 프로그램 로직 중에 반복되는 코드를 횡으로 분리하여 중복된 코드를 줄여주고 핵심 로직에 대한 가독성을 높이는 역할을함 ---- Model+ View + Controller = MVC Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분 View : 사용자에게 보여지는 UI 부분 Controller : 사용자의 입력(Action)을 받고 처리하는 부분 동작 순서 사용자의 Action들이 Controller에 들어온다. Cont.. 개발/Java 2021. 10. 17. [Git] Git Bash 로 hub에 push하기 (Git hub에 내 코드 올리기) 업로드할 폴더 우클릭 후 git bash here git init → 엔터 git remote add origin 레파지토리 링크 git status → 엔터 git add ./원하는폴더명 → 엔터 git config --global user.email "이메일주소" → 엔터 git config --global user.name "이름" → 엔터 git commit -m "올릴 코드의 이름" git push origin master → 엔터 github 로그인 하면 완료 Git 브랜치 push 방법 git init git remote add origin https://github.com/~.git git pull origin 브랜치이름 git checkout -b 브랜치이름 git add ./ 원하는 폴.. 개발/etc 2021. 10. 17. 이전 1 ··· 7 8 9 10 11 12 13 다음