일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 배열 돌리기1
- deque
- Stack
- GC
- BFS
- 빌더패턴
- 몬티홀
- springboot
- github
- Python
- 이진탐색
- 그리디
- Greedy
- 프로세스
- 그래프탐색
- g1gc
- 적정 스레드
- GarbageCollector
- 분할정복
- 회고
- 마크다운
- 문제풀이
- 브루트포스
- 면접복기
- 그래프 탐색
- 정수론
- DP
- Markdown
- 구현
- Today
- Total
목록프로그래밍/문제풀이 (20)
FeelingXD
❓ Problem 🤔 How 슈퍼소수 는 소수로 이루어진 집합을 나열했을때 소수번째인 소수들을 '슈퍼 소수' 라고 표현한다 예를들어 소수가 f(n) = [2,3,5, .. .. ] 있을때 슈퍼소수는 f'(n)=[3,5 ...] 즉 슈퍼소수는 f(f(n)) 임을 알 수 있다. 소수집합을 아리스토 테네스체 알고리즘을 통해 얻고 그중 소수번째인 소수 친구들을 모아준다. 입력값에대한 소수를 반환한다. ❗ Solve # 슈퍼 소수 import sys input =sys.stdin.readline def aristo_stick(): global aristo aristo = [False,False] + [True]*(318137-1) for i in range(2,318137): if arist..
❓ Problem 🤔 How 설명 요약 크기가 같은 두 큐가 주어지고 각 큐의 원소의 총합이 같도록 각큐는 poll 과 append 를한다. 문제에는 언급되지 않았지만 원소의 총합이 같을때 각 큐의 크기가 같을 필요는 없다. '큐의 원소의 총합' 하도록하는 최소 횟수를 반환하여야한다. 큐의 크기가 되어야하는값을 설정해야한다. 각 큐의합이 같아야하므로 (큐1 과 큐2 의 원소의 총합)/2(큐의 갯수) 가 목표치(target) 이 된다. 큐1과 큐2 중 하나를 기준삼아 현재 원소의 총합과 target과 비교를통해 다음행동을 한다. 합이 target과 같은경우 : 이경우는 현재 까지 한 행동 횟수를 반환한다. 합이 target보다 작은경우 : 이경우 반대큐에서 값을 하나 가져온다. 합이 target보다 클경우..
❓ Problem 자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어지는 자두를 받아서 먹고는 한다. 자두를 잡을 때에는 자두가 허공에 있을 때 잡아야 하는데, 이는 자두가 말랑말랑하여 바닥에 떨어지면 못 먹을 정도로 뭉개지기 때문이다. 매 초마다, 두 개의 나무 중 하나의 나무에서 열매가 떨어지게 된다. 만약 열매가 떨어지는 순간, 자두가 그 나무의 아래에 서 있으면 자두는 그 열매를 받아먹을 수 있다. 두 개의 나무는 그다지 멀리 떨어져 있지 않기 때문에, 자두는 하나의 나무 아래에 서 있다가 다른 나무 아래로 빠르게(1초보다 훨씬 짧은 시간에) 움직일 수 있다. 하..
❓ Problem 🤔 How 답이될수 있는 경우 👀 1. 현재 보고있는채널(100) 에서부터시작해서 +/- 버튼으로만 목표 채널까지 이동하는 경우 2. 버튼을 사용해서 특정 채널로 변경한후애 +/- 버튼을 추가로 사용해 목표 채널까지 이동하는 경우 (2가지 : 위로가는 경우와 아래로가는 경우)접근방법 답이 될수있는경우 [1]번 으로 정답값을 초기화해준다. 그후 목표 채널로부터 위/ 아래로 값을 탐색해 고장난 버튼을 사용하지 않고 이동할수있는 최초의 수를 찾아서 원래 가고자한 목표채널과의 차이를 더해주고. 답이 최소값이 될경우 갱신한다. 현재 구하고자하는것은 버튼누르는 횟수이므로 처음 채널이동시 누르는 버튼횟수도 생각하여야한다. ex) 7751 채널로 이동시 버튼을 4번누른다. ❗ Solve # 리모컨 i..
❓ Problem 바로가기 🤔 How 목표지점(주어진 문자상 2인지점) 부터 이동 가능한 거리라면 거리 아닐경우 -1 로 표시한다. 원래 이동하지못하는경우라면 0을 표시하여 출력한다. 조건 1. 원래 이동할수 없는 지역일경우 0으로 표시해야한다. 2. 이동가능한 지역이지만 목표지점까지 도달하지못할경우 -1로 표시해야한다. 3. 그외 모든 이동가능한 좌표에대해서 목표지점부터까지의 거리를 표시한다 (맨해튼 거리) ❗ Solve # 쉬운 최단거리 import sys from collections import deque input =sys.stdin.readline moves=[(0,1),(0,-1),(1,0),(-1,0)] def find_target(board): # 좌표가 2인목표지점을 찾는함수 for y..
[백준 - 2293] 동전 1 ❓ Problem 🤔 How 기본적인 DP 문제중 하나이다. 입력받은 target이 되도록하는 방법의 갯수를 구해야한다. dp테이블을 어떻게 접근해야할까 . dp 테이블 접근하기 이 문제의 경우 각 액수에 맞게 가능한 방법으로 dp 테이블을 구성해주었다. dp[n] = n이 될수있는 조합의 방법수 점화식 dp[i]+=dp[i-coin] = i의 액수는 현재 사용할 코인이전의 방법가짓수에 이번 코인을 사용한것과 같다 즉 dp[i-coin] + coin 은 dp[i] 가 되므로 dp[i] 에는 현재 dp[i]에 dp[i-coin]를 더해줌으로서 방법을 추가한다. ❗ Solve # 동전 1 import sys input =sys.stdin.readline def solution(..
❓ Problem 🤔 How M개에 블루레이를 모든 기타 강의 동영상을 녹화하기로 했다. 그리고 블루레이는 모두 같은 크기여야한다. 강의 순서가 변경되면안된다.(임의로 정렬할수없으며 연속으로 블루레이에 담도록해야한다.) 위의 이유로 단순 이진탐색에서 몇가지 조건이 추가된다. mid 값(블루레이) 으로 반환하되 임시 블루레이에 담을수있는 크기중 최소 의 값이 되도록 유지해야한다. 단! 이블루레이에는 1개의 영상만 들어갈수도있다. 난이도에비해 반례가 다양하니 신경쓰여하는 부분이 많은 문제이다. ❗ Solve import sys input =sys.stdin.readline def solution(): N,M=map(int,input().split()) li=list(map(int,input().split()..
❓ Problem 🤔 How 역순으로 dp테이블을 구성한다. 첫날부터 탐색할경우 일하는경우 하지않는경우 모두 탐색하기에 dp테이블로 일반화하기에는 어려움이있다. dp[i] 는 i 일부터의 최대값 으로 dp테이블을 만들어준다. dp 테이블의 갱신 테이블은 다음과같이 갱신된다 일을할수 있는경우 dp[i] =max(dp[i+d]+v,dp[i+1]) dp[i+d]+v 오늘일할경우 오늘일의 가치와 오늘일이 끝난이후의 최대값과 더해준 결과가 dp[i+1] 다음날 최대값과 비교해서 최대값을 갱신해준다. 일을 할수없는경우 다음날의 최대값 과 같다. dp[i]=dp[i+1] ❗ Solve #퇴사 import sys input = sys.stdin.readline if __name__ == "__main__": work_..