본문 바로가기

study

(104)
[Back-end/Spring] 스터디 3주차 정리 진도 : 자바(섹션3-상속및클래스) + 스프링 입문(섹션4,5) 자바 프로그래밍 입문 강좌 - https://www.inflearn.com/course/실전-자바_java-renew 스프링 입문 - https://www.inflearn.com/course/스프링-입문-스프링부트 나의 키워드 : DI / 스프링 컨테이너 / 어노테이션 / 인스턴스 스터디원의 키워드 : DI & IoC / 스프링 빈 / 컴포넌트 스캔 / 자동 의존관계 주입 / 타임리프 Q. DI는 IoC 사용을 필수로 요구하지 않는다? (아래의 출처 내용에서 나온 질문) IoC 컨테이너를 사용하지 않는 DI가 존재한다. (스프링 컨테이너를 IoC 컨테이너라고도 부른다.) IoC 컨테이너를 사용하면 직접 등록하지 않아도 되기 때문에 의존성 등..
[알고리즘] 3-Way inPlaceQuickSort - 네덜란드 국기 알고리즘 서론 quick sort quick sort는 기준 원소 pivot을 설정 후 기준 원소보다 작은 / 기준 원소와 같은 / 기준 원소보다 큰 리스트 3개로 분할하여 정렬한다. 따라서 입력 리스트의 모든 원소는 세 개의 부 리스트 중 하나에 삽입된다. inPlaceQuickSort quick sort는 제자리에서 수행되도록 구현이 가능하다. 입력 리스트의 원소를 재배치할 때 값을 삽입하는 대신 대체 작업을 수행한다. 대체란 입력 리스트 내에서 재배치되어야 할 원소들의 자리를 맞바꾸는 것이다. ※ 지금부터 설명하는 부분은 inPlaceQuickSort를 구현할 때 배열로 구현한다고 가정한다. 연결리스트에서는 쉽게 해결이 가능한 문제이기에 고민할 필요가 없었다. ※ quicksort를 진행할 때 분할 과정에 ..
[Back-end/Spring] 스터디 2주차 정리 진도 : 자바(섹션 2-객체) + 스프링 입문(섹션 3) 자바 프로그래밍 입문 강좌 - https://www.inflearn.com/course/실전-자바_java-renew 스프링 입문 - https://www.inflearn.com/course/스프링-입문-스프링부트 Q. MVC 패턴과 컨트롤러 / 서비스 / 리포지토리 / 도메인의 차이? MVC 패턴은 개발 방법론 (디자인 패턴의 한 종류) 컨트롤러 / 서비스 / 리포지토리 / 도메인은 웹 애플리케이션 계층 구조 전자는 이렇게 하면 더 효율적일 것이다 ~ 이고 후자는 이렇게 구성이 되어야만 한다. Q. MVC 패턴에서 View는 프론트엔드와 무엇이 다른가? 백엔드에서도 각 데이터를 다루고 이를 결국 HTML/CSS/JS와 같은 언어로 사용자가 볼 수..
[알고리즘/백준] 11725번 - 트리의 부모 찾기 11725번 트리의 부모 찾기 - https://www.acmicpc.net/problem/11725 카테고리 : Tree / BFS(그래프 탐색) 접근 방법 노드 정보를 받을 때 트리 상에서 연결된 두 정점에 대해서 받게 된다. 따라서 정보를 받을 때 누가 부모인지 알 수 없어서 먼저 Tree를 2차원 리스트에 담아주었다. 노드 번호를 인덱스로 사용하기 위해 0번째 인덱스는 사용하지 않았다. 그리고 그래프처럼 각 정점에 대해 연결된 서로의 정점 정보를 모두 담아주었다. node = [[] for _ in range(N + 1)] for _ in range(N - 1): n1, n2 = map(int, input().split()) node[n1].append(n2) node[n2].append(n1) ..
[알고리즘/백준] 16401번 - 과자 나눠주기 16401번 과자 나눠주기 - https://www.acmicpc.net/problem/16401 카테고리 : 이분 탐색 / 매개변수 탐색 접근 방법 이 문제는 매개 변수 탐색 문제이다. 매개 변수 탐색이란 이분탐색을 사용하여 조건을 만족하는 최댓값을 구하는 방법이다. 1. 막대 과자 길이를 매개 변수(이분 탐색을 진행하는 대상)으로 설정한다. --> 최소 길이 1 / 최대 길이 max(snack) 을 start와 end로 설정 start, end = 1, max(snack) 2. mid만큼 자를 때 mid 길이로 잘릴 수 있는 개수를 세어준다. ex) 만약 길이가 11인 막대 과자를 5로 자른다면 5 / 5 / 1 로 잘리기 때문에 개수는 2개 cnt = sum([snack[i] // mid for i..
[알고리즘/백준] 7576번 토마토 (BFS) 7576번 토마토 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 접근 방법 토마토가 보관 당시 익어있다면 배열에 1이라고 저장되어 있다. 이러한 토마토를 미리 시작 전 queue에 담아 BFS를 한다. for i in range(N): storage.append(list(map(int, input().split()))) ripe_tomatoes.extend([(i, j) for j in range(M) if storage[-1][j] == 1]) BFS를 할 때 위, 아래, 좌, ..
[알고리즘/백준] 1541번 잃어버린 괄호 1541번 잃어버린 괄호 - https://www.acmicpc.net/problem/1541 (그리디 알고리즘) 접근 방법 1번 예제에서 볼 수 있듯이 - 기호가 나온 후 뒤의 값이 크면 클수록 값이 작아진다. 따라서 1번 예제에서 괄호는 55-(50+40)으로 나타난다. 그래서 split 함수를 이용하여 - 기준으로 값을 나눈 다음 +가 들어있는 숫자들을 먼저 계산해 준 다음 다 더해준다. 이때 첫번째 숫자는 무조건 +이기 때문에 마지막에 계산을 따로 해준다. 코드 처음에는 +가 들어있는 경우에만 split을 해주었으나 각 값을 int형으로 형변환을 해주어야 해서 모든 값을 for문으로 돌리는 코드로 수정하였다. 그리고 + 기호만 포함되어있을 경우를 위해 if문으로 len(expression)==1의..
[알고리즘/백준] 2775번 부녀회장이 될테야 2775번 부녀회장이 될테야 - https://www.acmicpc.net/problem/2775 접근 방법 2층 4호 --> 20 = 2층 3호 + 1층 4호 ( 노랑 네모들의 합) 1층 4호 --> 10 = 1층 3호 + 0층 4호 ( 초록 세모들의 합) --> 재귀로 해결 가능 종료 조건 : 0층 or 1호 - 1호일 때 모든 값은 1 - 0층일 때 모든 값은 호수 def resident(k, n, apart): # 종료 조건: 0층이거나 1호일 때 if n == 1: return 1 if k == 0: return n return resident(k - 1, n) + resident(k, n - 1) 코드 - 처음에 Pypy3 통과 / Python3 시간 초과 def resident(k, n): ..