일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 새로고침
- 부산 맛집 OPEN API
- React
- 훈수 가능
- url 랜더링
- react-router-dom
- API 활용 신청
- 꿀팁 환영
- 공공데이터 포털
- level3
- php-1
- 고고학 최고의 발견
- 개발
- web-view
- 프로그래머스
- 코딩테스트
- Dreamhack
- apk 빌드
- redux state값 유지
- expo
- 티스토리챌린지
- 보안
- 사업계획서
- 드림핵
- Redux
- 오블완
- 창업 300
- 블로그 뉴비
- python
- Today
- Total
목록전체 글 (89)
1223v
https://www.acmicpc.net/problem/2631 가장 긴 증가하는 부분 수열의 심화 문제이다.dp를 통해 가장 많이 증가하는 폭을 찾고, 증가하는 폭을 제외한 나머지 값들은 값을 이동 시켜야하므로, (N-가장 긴 증가하는 폭) 정답이다.import sysinput = sys.stdin.readlineN = int(input())dp = [1] * Ns = []for _ in range(N): s.append(int(input()))for i in range(N): for j in range(i): if s[j] 회고.처음 문제를 접근했을때는 dp라는 감도 못잡았다. 또한, 가장 긴 증가하는 부분 수열을 통해 이동하지 말아야할 값을 찾고 이동하는 값을 N으로 빼줌..
https://www.acmicpc.net/problem/1965 부분 수열 dp 문제와 매우 유사한 문제이다. 제일 긴 부분 수열 문제처럼 dp 테이블에 1씩 더해주면서 값을 늘려주고 최댓값을 찾으면 된다. 하지만, 마지막 본인 수까지 포함해야함으로 마지막에 max값에 +1을 해준다.import sysinput = sys.stdin.readlineN = int(input())s = list(map(int,input().split()))dp = [0] * Nfor i in range(N): for j in range(i): if s[j] 회고.부분 수열문제를 최근에 풀어 바로 풀 수 있었던것 같다. 만약 2개월 지난 후 본다면 풀 수 있을까 의문이다...
https://www.acmicpc.net/problem/11055 DP의 대표적인 문제라고 할 수 있다. 여기서 주의할 점은 갯수가 아닌 값을 더해서 최댓값을 찾는 것이다.우선 dp 테이블을 s와 동일하도록 구성해주고, j 부터 i까지 가는 도중에 s[j] import sysinput = sys.stdin.readlineN = int(input())s = list(map(int,input().split()))dp = s[:]for i in range(N): for j in range(i): if s[i] > s[j]: dp[i] = max(dp[i], dp[j]+s[i])print(max(dp)) 회고.처음에 가장 큰 증가하는 부분 수열을 dp테이블 초기화 과정에서..
https://www.acmicpc.net/problem/9655 해당 문제는 2개의 풀이가 가능하다. 그리디 풀이 방식import sysinput = sys.stdin.readlineN = int(input())# 1개 혹은 3개chk = -1while N >0: chk = -chk if N - 3 >0: N -= 3 else: N -= 1if chk == 1: print("SK")else: print("CY") dp 풀이 방식import sysinput = sys.stdin.readlineN = int(input())dp = [False] * (N+1)dp[1] = Trueif N >= 2: dp[2] = Falseif N >= 3: ..
https://www.acmicpc.net/problem/2116 제한된 조건 내에 최대 값을 찾는 완전 탐색 문제이다.백트래킹으로 탐색을 진행했는데 이 코드에서 유심히 봐야할 코드는 조건문이다.조건에서 0와 5은 서로 반대편이므로 total 값에 사용될 수 없다.마찬가지로 [1, 3 ] [2,4]는 만약 위,아래 값을 마추는 주사위로 사용되었으면, 사용이 불가능한 인덱스가 되어버린다.즉, 이전 재귀함수에서 보내준 주사위 윗값이 같은 인덱스를 찾고 그 인덱스와 연관된 ([1, 3 ] [2,4], [0,5]) 값일 경우를 제외한 모든 값중 가장 큰값을 더한 후 다음 재귀로 넘겨주면 된다.import syssys.setrecursionlimit(10**5)input = sys.stdin.readlineN =..
https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 백트래킹을 이용한 완전 탐색 문제라고 생각했다.방문할 수 있는 던전의 최대값을 백트래킹을 통해 확인해본 뒤, 가장 큰 값을 반환하는 문제이다.max_value = 0def solution(k, dungeons): length = len(dungeons) visited = [False] * (length) def dfs(n, now, cnt): global max_value max_valu..
https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 완전 탐색문제이다. 3명의 답안 패턴을 가지고, 가장 많이 맞은 사람을 찾는 로직이다.답안의 패턴 배열을 만들고, 나머지 연산으로 값의 정답 유무를 확인하면 된다.def solution(answers): result = [] correct_length = len(answers) one_ans = [1,2,3,4,5] two_ans = [2,1,2,3,2,4,2,5] three_ans = [3,3,1,1,2,2,4,4..
https://www.acmicpc.net/problem/1374 끝시간보다 시작시간이 크면 같은 강의실에 들어갈 수 있다는 의미이므로, 앞시간은 빼도 된다. 즉, 모든 끝시간을 넣었을 때, heapq가 가장 길었을때가 겹치는 시간이 제일 많은 시간대이므로 강의실이 가장 많이 쓰이던 상황이니 최대값을 계속 갱신해주면 된다. #https://www.acmicpc.net/problem/1374import sysimport heapqinput = sys.stdin.readlineN = int(input())s = [list(map(int,input().split())) for _ in range(N)]s.sort(key=lambda x : x[1])hq = []cnt = 0for i in s: while..
https://www.acmicpc.net/problem/2212 그리디 + 정렬 문제이다.주어진 직선상의 좌표에서 정렬을 진행한 후, 그 사이에 값의 차이 중 가장 큰 부분들을 배열에 저장하여, K개의 영역만 남도록K-1개 만큼 사이의 거리를 없애줌으로써 영역을 분리해준다. 그 후, 다 더하면 영역사이의 거리 최솟값을 구할 수 있다.# https://www.acmicpc.net/problem/2212# 다시 풀어볼 문제import sysinput = sys.stdin.readlineN = int(input())K = int(input())s = list(map(int,input().split()))s.sort()if K >= N: print(0) exit()dist = []for i in ..