일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- programmers
- java
- 추석맞이 코딩챌린지
- 다익스트라
- python
- Zip
- 카카오
- heapq
- Combinations
- 백준
- 위클리 챌린지
- 정렬
- dfs
- 이분탐색
- Re
- KAKAO BLIND RECRUITMENT
- 재귀함수
- 그리디
- 정규식
- divmod
- DateTime
- BFS
- 동적 계획법
- 수학
- Set
- 자바
- backjoon
- lambda
- 프로그래머스
- 파이썬
- Today
- Total
목록백준 (84)
상상쓰
https://www.acmicpc.net/problem/15954 15954번: 인형들 첫 번째부터 세 번째까지의 인형을 선택하면 표준편차는 2/3의 양의 제곱근이 되고, 이 때 표준편차가 최소가 된다. 두 번째부터 네 번째까지의 인형을 선택하는 경우와, 세 번째부터 다섯 번째 www.acmicpc.net K 이상의 연속된 인형의 값의 표준편차 중 가장 작은 값을 반환하면 되는 문제다. 반목문을 통하여 구한 K 이상의 길이의 배열들의 표준편차를 구할 때 필요한 평균 또는 분산의 값들은 누적 합을 통하여 새로이 정의된 배열을 통해서 구한다. (시간 초과 방지) sumDolls[][0] 은 누적 합이며, sumDolls[][1] 은 누적 제곱합이다. m(평균) = (sumDolls[end][0] - sum..
https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 하나의 원(행성계의 경계)이 있을 때, 출발점과 도착점이 원의 안 또는 바깥에 있는 경우 진입 또는 이탈이 필요가 없다. 즉, 출발점과 도착점 중 하나의 점이 원 안에 있는 경우만 answer 을 1씩 더해서 반환하면 된다. import sys T = int(sys.stdin.readline()) for i in range(T): x1, y1, x2, y2 = map(int, sys..
https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 유클리드 호제법을 이용하여 최대공약수(gcd)를 구한 후, 최소공배수(lcd) = a * b // gcd 를 구한다. import sys def gcd(a, b): if a % b == 0: return b else: return gcd(b, a%b) T = int(sys.stdin.readline()) for i in range(T): a, b = map(int, sys.st..
https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제를 보고 점화식을 잘 만들면 된다. P[N] = P[N-2] + P[N-3] (N >= 4) P[1] = P[2] = P[3] = 1 import sys T = int(sys.stdin.readline()) for i in range(T): N = int(sys.stdin.readline()) p = [0] * (N + 2) p[1], p[2] = 1, 1 for i in range(3, N+1):..
https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 2021년은 윤년이 아니다. import sys Y = int(sys.stdin.readline()) answer = 1 if Y % 4 == 0 and (Y % 100 != 0 or Y % 400 == 0) else 0 print(answer)
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 동적계획법으로 역순으로 dp[i] 를 정하였다. (dp[i] = i일부터 N일까지 일했을 때의 최대 이익) 걸리는 기간을 포함한 날짜가 N일을 넘어가면 일을 할 수 없는 경우이므로 dp[i] = dp[i+1] 일을 할 수 있는 경우에는 i일에 일을 하지 않았을 때와 i일에 일을 했을 때 중 최댓값을 dp[i] 로 설정한다. i 일에 일을 하지 않았을 때 : dp[i+1] (i+1일부터 N일까지 일했을 때의 최대 이익) i 일에 일을 했을 때 : p + dp[i+t] (i일에 일을 했을 때 얻는 이익 + (i+t)일부터 N일까지 일을 ..
https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net Node class 를 만들어 트리 순회를 해보았다. dic[i] = Node(i) (i 는 'A' ~ 'Z') 를 만들고 주어지는 입력을 바탕으로 dic[i].left = dic[left], dic[i].right = dic[right] 로 왼쪽 자식 노드 또는 오른쪽 자식 노드에 알맞는 노드를 준다. '.' 은 생략한다. 다음 재귀를 이용하여 전위 순회, 중위 순회, 후위 순회를 구..
https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 주어진 A, B 를 문자열로 받아 일의 자리부터(A[::-1]) 차례대로 덧셈하여 답을 구하게 하였다. 길이가 차이가 나는 경우, 빈 문자에는 '0' 이 들어가야 각 자리에서 계산이 되므로 ljust 함수를 사용하여 빈 문자에 '0' 을 채워 넣었다. import sys A, B = sys.stdin.readline().split() M = max(len(A), len(B)) A, B = A[::-1].ljust(M, '0'), B[::-1].ljust(M, '0') result= [] d = 0 for ..
https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 0층일 때, dp = [1, 2, 3, 4, 5, 6, ...] 1층일 때, dp = [1, 3, 6, 10, 15, 21, ...] 2층일 때, dp = [1, 4, 10, 20, 35, 56, ...] ... 즉, 층이 올라갈 때 동적 계획법으로 구현해주면 된다. (dp[i] = dp[i-1] + dp[i]) import sys T = int(sys.stdin.readline()) for i in range(T): dp = [j fo..
https://www.acmicpc.net/problem/2530 2530번: 인공지능 시계 첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0 www.acmicpc.net datetime 을 이용하여 시간을 설정하고 시간을 연산할 수도 있다. import sys, datetime h, m, s = map(int, sys.stdin.readline().split()) seconds = int(sys.stdin.readline()) now = datetime.datetime(2021, 8, 19, h, m, s) answer = now + da..