일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- error
- spring security
- 라이브템플릿
- Spring
- codility
- algorithm
- 파이썬
- 최단경로
- applicationeventpublisher
- counting elements
- 백준
- 2981
- 문자열
- java
- HTTP
- Dijkstra
- 2018 KAKAO BLIND RECRUITMENT
- Python
- 프로그래머스
- API
- 탐욕법
- 코딩테스트
- springboot
- Greedy
- 소수
- BFS
- beandefinitionstoreexception
- javascript
- 알고리즘
- brute force
- Today
- Total
목록전체 글 (78)
Altiora Petamus
Decorator Pattern 자바의 입출력 스트림은 decorator pattern 이다. 여러 decorator들을 활용하여 다양한 기능을 제공 상속보다 유연한 구현 방식 데코레이터는 다른 데코레이터나 컴포넌트를 포함해야 한다. 지속적인 기능의 추가와 제거가 용이 decorator와 component는 동일한 것이 아니다 (기반 스트림 클래스가 직접 읽고 쓸 수 있다. 보조 스트림은 추가적인 기능을 제공한다) 구현 데코레이터 패턴을 활용하여 커피 머신 기능을 만들어보자. 요구사항 기본적인 에스프레소 커피에 물을 추가하면 아메리카노, 우유를 추가하면 라떼, 모카 시럽을 추가하면 모카커피가 되는 형식이다. 먼저 커피를 구현해보자 public abstract class Coffee { public abs..
Serialization 이란? Serializable 인터페이스 Marker Interface transient Serialization 이란? 인스턴스의 상태를 그대로 파일 저장하거나 네트워크로 전송하고 (serialization) 이를 다시 복원(deserialization) 하는 방식 자바에서는 보조 스트림을 활용하여 직렬화를 제공 ObjectInputStream과 ObjectOutputStream Serializable 인터페이스 직렬화는 인스턴스의 내용이 외부로 유출되는 것이므로 프로그래머가 해당 객체에 대한 직렬화 의도를 표시해야 한다. 구현 코드가 없는 marker interface transient : 직렬화 하지 않으려는 멤버 변수에 사용 (Socket 등 직렬화 할 수 없는 객체) i..
위와 같은 에러가 나왔다면 해당 에러는 servlet-api 2.4 버전이 너무 낮다는 뜻입니다. javax.servlet.ServletContext.getVirtualServerName() 메소드는 3.1 버전에서 추가되었으므로 나는 에러입니다. 저는 Gradle을 사용하므로 compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1' 의존성을 추가해서 해결했습니다. Reference java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [NonLoginAuthenticato 에러 로그..
11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 🤔생각해보기 n을 i 로 나눠보고 나머지가 0 이라면 출력, n //= i 를 사용하여 n을 몫으로 재설정 n이 i로 나누어지지 않는다면 i += 1 i^2가 n과 같아질 때까지 실행 만약 n = 10이라면, 2 로 나누어지고 n = 5 가 된다. 5는 소수이므로 i는 증가만 하다가 5가 되면서 루프를 빠져나오게 되고 결과가 2와 5만 출력되게 된다. 5는 소수이므로 ⇒ 소수를 판별하는 과정은 제곱근을 활용한다. 자세히 생각해보니 i와 n이 같아질 때까지 검사하는 것은 시간복잡도만 증가시킬 것 같았다. 애초에 루프를 i의 제곱이 n과 같아질 때까지만 실행시키면 된다. 성공 코드 n ..
5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 🤔생각해보기 꽤나 매콤한(?) 문제였습니다. 시간초과 제한이 상당히 타이트한데, 하나하나 짚어봅니다. 먼저 제시된 함수를 보면 뒤집는 것과 첫번째 숫자를 버리는 것입니다. 파이썬을 평소 즐겨 사용해왔다면 collections deque 모듈에 존재하는 다음과 같은 함수를 바로 떠올릴 수 있을 겁니다. reverse() popleft() 위 메소드만 잘 사용하면 "예제는" 통과하는 답을 나오게 할 수 있습니다. 하지만 위 메소드 중 어느 하나라도 사용한다면 얄짤없이 바로 시간초과가 발생합니다. 한마디로 함정카드인 것이죠..
2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 🤔생각해보기 문제에서 정답을 구하는 법을 다 설명해주는 쉬운 문제 중 하나이다. 성공 코드 from collections import deque N = int(input()) cards = deque([i for i in range(1, N + 1)]) while len(cards) > 1: # 카드뭉치의 윗장를 버린다. cards.popleft() # 아래로 옮긴다. cards.rotate(-1) # 남은 카드 한장 print(cards[0]) 코드에 특별한 ..
2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 🤔생각해보기 최소공배수를 구해야하는거 같긴한데 어떤 수의 최소 공배수를 구해야할지, 도무지 어떤 방법으로 접근해야할지 감이 안와서 여러가지 방법을 시도했지만 시간 초과나 실패가 발생했다... 타 블로그를 참고해보니 '입력값들의 차이가 일정하며 그 차이들의 최대공약수의 약수가 정답'이라는 정보를 얻고 로직을 만들어봤다. 성공 - PyPy3가 아니라 Python3로 제출 import math N = int(input()) nums = sorted([int(input()) for _..
최대공약수 # new in version python 3.5 import math math.gcd(6, 8) # 2 최소공배수 def lcm(a, b): return a * b // gcd(a, b) python 3.9 버전부터는 math에 최소공배수 함수가 추가되었다. # new in version 3.9 import math math.lcm(15, 25) # 75 Reference math — Mathematical functions — Python 3.9.5 documentation math — Mathematical functions This module provides access to the mathematical functions defined by the C standard. These f..