이진탐색
알고리즘2023. 1. 25. 21:07이진탐색

순차 탐색 가장 기본 탐색 방법으로 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 ⇒ 시간만 충분하다면 항상 원하는 데이터를 찾을 수 있다 , 다만 처음부터 순서대로 모두 탐색해야하기 때문에 시간복잡도는 O(N)이다 def sequential_search(n,target,array): for i in range(n): if array[i] == target: return i+1 input_data = input().split() n = int(input_data[0]) target = input_data[1] array = input().split() print(sequential_search(n,target,array)) # 입력 # 5 apple # b..

Spring2023. 1. 19. 23:37회원관리 예제

1. 비즈니스 요구사항 정리 아주 간단한 비즈니스 관리 회원ID,이름 데이터를 가지고 회원등록, 조회 기능을 구현해볼 예정 일반적인 웹 애플리케이션 계층 구조 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 예) 회원,주문,쿠폰 등등 주로 데이터베이스에 저장하고 관리 됨 클래스 의존관계 아직 데이터 저장소가 선정되지 않아서 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 데이터 저장소는 RDB,NoSQL 등등 다양한 저장소를 고민중인 상황으로 가정 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 2. 회원 도메인과 리포지토..

알고리즘2023. 1. 19. 12:15정렬

정렬 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 말함 선택 정렬 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두번째 데이터와 바꾸는 과정을 반복한다. 숫자가 총 N개 있을 때 N-1번 반복하면 된다 연산 횟수는 N+(N-1)+(N-2)+ … +2 = (N² + N)/2 번이다. 따라서 시간 복잡도는 O(N²) 이므로 알고리즘 문제 풀이에 사용하기에는 느리다 array = [7,5,9,0,3,1,6,2,4,8] for i in range(len(array)): min_index = i # 앞에 있는 원소 인덱스 for j in range(i+1,len(array)): if array[min_index] > array[j]: # 현재 원소보다 크..

스프링 웹 개발 기초
Spring2023. 1. 18. 16:01스프링 웹 개발 기초

스프링 웹 개발 기초 정적 컨텐츠 MVC와 템플릿 엔진 API 정적 컨텐츠 정적으로 된 웹 페이지 1. hello-static.html 을 resources/static 폴더에 저장 hello-static.html입니다. 2. http://localhost:8080/hello-static.html 에 접속 동작 원리 스프링 부트는 정적 컨텐츠 기능을 자동으로 제공해 줌 localhost:8080/hello-static.html 에 접속하면 내장 톰켓 서버가 요청을 받아서 스프링에 넘김 스프링은 컨트롤러에서 hello-static이라는 컨트롤러가 있는지 확인 컨트롤러가 없으면 /static 폴더에서 찾아서 실행 MVC와 템플릿 엔진 MVC : Model,View,Controller Model : 필요한 내..

View 환경설정
Spring2023. 1. 18. 15:59View 환경설정

welcome 페이지 만들기 1. html 파일을 만들어준다 src/resources/static 폴더에 index.html 을 만들어 줍니다. Hello hello 2. 다시 실행하면 html 화면이 정상적으로 적용된 것을 확인할 수 있다. 스프링 부트에서는 welcome page를 static 폴더에서 index.html를 찾고 , 만약에 못 찾으면 index 템플릿을 찾는다고 한다. 템플릿 엔진 스프링 부트에서 사용할 수 잇는 템플릿 엔진 Thymdleaf 템플릿 엔진을 이용 웹 브라우저에서 hello로 들어가면 내장 톰켓 서버에서 받아서 spring에 helloController에서 @GetMapping(”hello”)를 찾아 매칭시킴 @GetMapping(”hello”)의 메소드를 실행시킨다. ..

Spring2023. 1. 17. 14:41라이브러리 살펴보기

라이러리 살펴보기 External Libaries 에 우리가 불러온 라이브러리들을 저장한다 . Maven,Gradle과 같은 빌드 툴은 의존 관계를 관리해준다. 불러온 라이브러와 관련된 라이브러리들을 불러온다. 스프링 부트 라이브러리 spring-boot-starter-web 안에는 spring-boot-starter-tomcat 이라는 톰캣(웹서버) 와 spring-webmvc 라는 스프링 웹 MVC 가 있다 spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진( View) spring-boot-starter(공통) 에는 스프링 부트와 스프링 코어, 로깅이 있다 spring- boot spring-core spring-boot-starter-logging logback,slf4..

알고리즘2023. 1. 12. 21:51DFS / BFS

DFS와 BFS는 스택과 큐를 알아야만 한다. 스택 스택은 선입후출(FILO) 구조 또는 후입선출(LIFO) 구조이다. 파이썬에서 스택을 이용할 때에는 별도의 라이브러리를 사용할 필요가 없다. 기본 리스트에서 append()와 pop() 메서드를 이용해 스택 자료구조와 동일하게 동작시킨다. append() 메서드는 리스트의 가장 뒤쪽에 데이터를 삽입하고 pop() 메서드는 리스트의 가자 뒤쪽에서 데이터를 꺼낸다 stack = [] stack.append(5) stack.append(2) stack.append(1) stack.append(9) stack.pop() stack.append(4) stack.append(3) stack.pop() print(stack) # 최단 원소부터 출력 print(sta..

알고리즘2023. 1. 12. 16:32구현

구현 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 코딩테스트에 자주 출제됨, 완전 탐색과 시뮬레이션 유형을 같이 공부함 완전 탐색은 모든 경우의 수를 주저 없이 다 계산하는 방법을 말하고, 시뮬레이션은 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행해야하는 문제 유형을 말한다. 구현 시 고려해야 할 메모리 제약 사항 파이썬에서는 리스트 크기를 고려해야 한다. 대체로 코딩 테스트에서는 128~51MB로 메모리를 제한하는데 알고리즘 문제 중 때로는 수백만 개 이상의 데이터를 처리해야 하는 문제가 출제되곤 한다. int 자료형 데이터의 개수에 따른 메모리 사용량 데이터의 개수 (리스트의 길이) 메모리 사용량 1,000 약 4KB 1,000,000 약 4MB 10,000,000 약 40MB 리스트 ..

image