목차 Singleton Pattern 싱글톤 패턴은 자바에서 이용되는 디자인 패턴 중 하나다(스프링 부트가 아니다!). 주로 아래와 같은 상황을 해결하기 위해 사용되며, 공유자원 관리 디비 연결, 로깅, 캐싱과 같은 자원은 시스템 전체에서 한 번만 생성되면 충분하다. 비용이 많이 드는 객체 생성 같은 객체가 빈번하게 생성되는 경우 비용이 많이 든다. 이 경우 싱글톤 패턴을 이용해 하나의 인스턴스를 생성한 뒤에 해당 인스턴스를 재사용함으로써 리소스 낭비를 줄일 수 있다. 전역 변수 사용 제한 전역 변수는 시스템 복잡도를 증가시키고 지역 변수와 충돌할 가능성도 있다. 이를 해결하기 위해 싱글톤 패턴을 이용해 전역변수의 사용을 최소화할 수 있다. 보통 아래와 같은 방식으로 구현하게 된다. 생성자를 privat..
Java+Python으로 순열/조합/중복순열/중복조합 구현하기 [Java+Python]15649번, N과 M(1), 순열 [Java+Python]15650번, N과 M(2), 조합 [Java+Python]15651번, N과 M(3), 중복순열 [Java+Python]15652번, N과 M(4), 중복조합 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 구분해서 출..
프로세스 스케줄러(Process Scheduler)는 OS의 핵심 기능으로서 동시에 실행되는 프로세스의 실행순서와 우선순위를 관리하는 역할을 한다. 조금 더 자세히 말하자면 여러 프로세스가 시스템의 리소스에 접근할 때 필연적으로 경쟁상태에 놓이게 되는데, 프로세스 스케줄러는 이 경쟁상태를 적절히 조율해서 리소스의 사용 효율성과 짧은 응답시간, 처리량과 처리율 등을 극대화시키기 위해 다양한 알고리즘을 이용해 프로세스의 스케줄을 관리한다. 이와 같은 프로세스 스케줄링 알고리즘은 크게 아래의 두 가지로 나뉘며, 선점형 스케줄링 특정 프로세스가 CPU를 점유하고 있더라도 우선순위가 높은 다른 프로세스가 실행되면 강제로 기존 프로세스를 중단시키고 새로운 프로세스를 실행시키는 방식이다. 우선순위 기반, 라운드 로빈..
문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 풀이 앞의..
문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 풀이 앞의..
목차 그간 웹에서 장고 예제를 찾은 뒤 열심히 따라 해서 기초적인 게시판을 만들었는데, 그 마지막 글에 '짜잔! 여기까지 함수 기반 뷰였습니다! 클래스 기반 뷰를 보려면 아래 링크를 참조하세요!'라고 되어있어 무척 당황을 했다. 해서 한 다리 건너 아는 개발자에게 물어보니 '무조건 클래스 기반 뷰로 개발하셔야 한다.' 는 답이 돌아와서 처음부터 클래스 기반 뷰로 개발하는 예제를 찾았으나 실패. 원래 함수 기반 뷰로 먼저 개발한 뒤에 클래스 기반 뷰로 바꾸는 걸까? 그럴 리가 없다고 생각해서 지금까지도 적당히 따라 할만한 블로그를 찾는 중이다. 없으면 뭐.. 공식문서 봐야지... 아무튼 MVT 패턴에도 채 익숙해지지 못했지만 지금까지와는 살짝 다른 방법의 구현을 해야 한다고 하니, 나를 위해 짧게라도 정리..
목차 컴프리헨션은 여러 가지 뜻이 있지만, 파이썬의 맥락에서는 '함축'이라는 단어가 가장 어울리는 것 같다. 그 뜻대로 파이썬 컴프리헨션이란 리스트, 딕셔너리, 집합 등을 축약해서 만들어주는 기능이다. 처음 접할 땐 '뭐 이렇게까지 해야 하나..' 싶지만 일단 익숙해지면 기존의 방식이 되려 거추장스럽다. 시작하기 전에, 자바로 입문한 내게 있어 배열 선언과 요소 입력은 아래와 같은 방식이었다. arr = [0] * 5 for i in range(5): arr[i] = input() print(arr) ['1', '2', '3', '4', '5'] 물론 작동은 잘한다. 다만 파이썬에는 배열이 따로 없고 리스트가 존재하며, 자바의 배열과 달리 크기가 고정되는 타입이 아니다. 그래서 아래와 같이 고쳐서 사용했..
프레임워크에 대한 지식 없이 파이썬으로 알고리즘 풀이만 하다가 이제 준비가 된 것 같아(?) 간단한 게시판 만들기를 따라 해 보았다. 내가 생각해야 하는 것이 아니라 보고 따라 적기만 하면 되는 거라서 구현 자체는 잘 됐는데, 적당히 따라 하다 보니 여러 가지 새로운 개념에 대해 정리해야 할 것 같다는 판단이 들었다. 예를 들면 함수 기반 뷰와 클래스 기반 뷰의 차이 같은 것. 근데 이에 대해 알려면 일단 스프링의 MVC과는 다른 장고의 MVT패턴을 제대로 알아야 할 것 같아 글쓰기 페이지를 열었다. 시작! MVT Pattern MVT패턴은 Model-View-Template의 앞글자를 딴 패턴으로서, 기존의 MVC 패턴에서 파생된 개념이다. 따라서 태생적으로 MVC 패턴과 비슷한 구조를 가지고 있긴 하..
바다를 보면 어쩐지 번거로워져요 멋지고 놀라워도 어쩐지 번거로워져요 봄을 꽃이나 감동이라 부르지 않고 그냥 봄이라 부르는 것처럼 바다도 서쪽과 동쪽으로 구분하지 않고 파랗다거나 칠흑이라 표현하지 않고 그냥 물이라고 부르면 될 텐데 번거롭게도 바다 앞에선 생각이 많아져요 바다는 트럭도 삼키고 고양이도 삼키지만 중력 앞에서는 한없이 약해져요 그렇기 때문에 매일 밤마다 중력을 이기는 달을 보면서 어쩔 줄 몰라하는 것이에요 그때마다 나는 달빛 아래서 성별도 없는 달이 까맣게 그을리기를 바라고 원하게 돼요 바닷물이 닿았던 골목길을 한 줄 한 줄 모아서 땋다보면 땋는 과정에서 열 번의 한숨 끝에 준비 없이 비를 맞게 돼요 홀딱 젖었고 골목길에 끊긴 곳이 없었으므로 바다와 관련된 나의 모든 것은 아직 늦지 않았다고 ..
Java+Python으로 순열/조합/중복순열/중복조합 구현하기 [Java+Python]15649번, N과 M(1), 순열 [Java+Python]15650번, N과 M(2), 조합 [Java+Python]15651번, N과 M(3), 중복순열 [Java+Python]15652번, N과 M(4), 중복조합 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 ..
- Total
- Today
- Yesterday
- 유럽
- 세계일주
- 스프링
- 동적계획법
- 남미
- 자바
- 리스트
- 기술면접
- 유럽여행
- 칼이사
- 여행
- 스트림
- spring
- RX100M5
- 백준
- 지지
- 세계여행
- 중남미
- BOJ
- Backjoon
- 파이썬
- 세모
- Python
- 야경
- Algorithm
- 면접 준비
- a6000
- 맛집
- java
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |