일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- python
- 추석맞이 코딩챌린지
- 동적 계획법
- DateTime
- heapq
- 그리디
- Set
- 위클리 챌린지
- 프로그래머스
- 백준
- 다익스트라
- Re
- programmers
- 정렬
- divmod
- Combinations
- BFS
- 카카오
- java
- 재귀함수
- 수학
- 자바
- 파이썬
- 이분탐색
- KAKAO BLIND RECRUITMENT
- backjoon
- 정규식
- lambda
- dfs
- Zip
- Today
- Total
목록백준 (84)
상상쓰
https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿 www.acmicpc.net 1 * 1 로 자르기 위해서 먼저 가로(또는 세로)의 길이가 1이 되도록 잘라야 한다. 즉, N - 1(또는 M - 1) 가지 경우의 수 가로(또는 세로)의 길이가 1인 초콜릿을 각각 1 * 1 로 자른다고 생각하면 N * (M - 1)(또는 M * (N - 1)) 가지 경우의 수가 나온다. 즉, N - 1 + N * (M - 1) = M - 1 + M * (N - 1) = N * M - 1..
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 원과 원이 만나는 경우를 생각하면 된다. 1) 원과 원이 만나는 점이 무수히 많을 때 : 두 원의 중심과 반지름의 길이가 같아야 한다. 2) 원과 원이 만나는 점이 두 개일 때 3) 원과 원이 만나는 점이 한 개일 때 4) 원과 원이 만나는 점이 하나도 없을 때 인 경우가 존재한다. 즉, -1, 2, 1, 0 에서 적절한 답을 answer 에 담아 출력하면 된다. 원을 그려보면 아래의 부등식을 쉽게 이해할 수 있다. 2) : |r2 - r1| < d..
https://www.acmicpc.net/problem/16637 16637번: 괄호 추가하기 길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순 www.acmicpc.net DFS 알고리즘, 재귀함수를 이용하여 괄호를 추가할 수 있는 모든 경우를 나타내었다. 3+8*7-9*2 를 예로 들었을 때, rf 함수에 str(l) + o + l_ + o_ + r_ 를 출력해보면 0+(3+8)*7-9*2 0+(3+8)*(7-9)*2 0+(3+8)*7-(9*2) 0+3+(8*7)-9*2 0+3+(8*7)-(9*2) 0+3+8*(7-9)*2 0+3+8*7-(9*2) (..
https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 동적 계획법 문제로 dp 배열을 잘 정의해주자. dp 는 2차원 배열로 행을 물건의 개수, 열을 배낭의 무게로 잡는다. dp[i][j] 는 물건이 i 개 있을 때 j 를 수용할 수 있는 배낭에 들어갈 수 있는 가치의 합의 최댓값이라고 정의하자. 그럼, 물건이 추가됐을 때, 그 물건의 무게가 j 보다 작으면 그 물건은 수용할 수 없으..
https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 이차원 배열로 수열을 비교하여, 1) 같은 문자일 때, dp[i][j] = dp[i-1][j-1] (두 수열에서 같은 문자가 추가되기 전의 최댓값) + 1 ACAYK 와 CAPCAK 의 LCS 의 길이는 ACAY 와 CAPCA 의 LCS 의 길이의 + 1 이다. 2..
https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net dictionary 를 이용하여 친구 관계를 나타내고 1 과 dic[1] (1 의 친구들) 의 친구들을 friends 집합에 담아서 중복을 없앤다. friends 에 원소가 있는 경우 1 이 존재하므로 len(friens) - 1 을 반환해주고 그렇지 않으면, 0 을 반환해준다. import sys from collections import defaultdict n = int(sys..
https://www.acmicpc.net/problem/10699 10699번: 오늘 날짜 서울의 오늘 날짜를 출력하는 프로그램을 작성하시오. www.acmicpc.net 파이썬에서 아래와 같이 현재 날짜를 출력할 수 있다. from datetime import datetime print(datetime.today().strftime("%Y-%m-%d"))
https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 위치도 기억해야 하고 N 이 50 이하이므로 정렬로 구하기보다는 이중 for 문을 사용하여 덩치마다 큰 덩치가 나타나면 rank 를 1 씩 더하여 answer 에 담았다. 몸무게가 같고 키가 크면 덩치가 더 큰 줄 알았는데, 문제를 다시 보니 둘 다 값이 커야 덩치가 크다고 말 할 수 있다. import sys N = int(sys.stdin.readline()) bulk = [] a..
https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 세 자리수 곱셈 import sys A = int(sys.stdin.readline()) B = sys.stdin.readline().strip() answer = 0 print(A * int(B[2])) answer += A * int(B[2]) print(A * int(B[1])) answer += A * int(B[1]) * 10 print(A * int(B[0])) answer += A * int(B[0]) * 100 print(answer)
https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 모든 문자열의 같은 위치의 문자가 같으면 그대로 출력하고 하나라도 다르면 '?' 를 출력한다. import sys N = int(sys.stdin.readline()) S = list(sys.stdin.readline().strip()) M = len(S) for i in range(N - 1): T = list(sys.stdin.readline().strip()) for j in range..