일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- divmod
- 자바
- Zip
- Set
- DateTime
- Combinations
- 정규식
- 동적 계획법
- KAKAO BLIND RECRUITMENT
- 다익스트라
- Re
- backjoon
- BFS
- 그리디
- programmers
- 수학
- 카카오
- java
- python
- 프로그래머스
- lambda
- 재귀함수
- heapq
- 백준
- 위클리 챌린지
- 정렬
- 이분탐색
- 추석맞이 코딩챌린지
- 파이썬
- dfs
- Today
- Total
목록백준 (84)
상상쓰
https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net number 배열을 만들어 차례대로 값을 Fasle 로 바꿔가며 K 번째 해당하는 값을 구하면 된다. import sys, math N, K = map(int, sys.stdin.readline().split()) answer = 0 number = [True] * (N + 1) for i in range(2, N + 1): for j in range(2, N + 1): if number[j]: if j % i == 0: number[j] = False K -= 1 if K == 0:..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택은 Last In First Out! import sys N = int(sys.stdin.readline()) stack = [] for i in range(N): cmd = sys.stdin.readline().strip().split() if cmd[0] == 'push': stack.append(cmd[1]) elif cmd[0] == 'pop': print(-1 if ..
https://www.acmicpc.net/problem/21919 21919번: 소수 최소 공배수 수열 중에 소수는 2, 3, 5가 있다. www.acmicpc.net 중복되지 않은 소수의 곱이 최소 공배수이다. 중복되는 소수가 나올 수 있는 경우를 주의하자. '틀렸습니다' 가 아닌 '출력 초과' 로 나와서 뭐가 틀렸는지 한참 찾았다. import sys, math def prime(n): answer = True for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: answer = False break return answer N = int(sys.stdin.readline()) A = list(map(int, sys.stdin.readline().st..
https://www.acmicpc.net/problem/5545 5545번: 최고의 피자 상근이는 근처 피자 가게에서 매일 저녁으로 피자를 배달해 먹는다. 주머니 사정이 얇아진 상근이는 이번 달부터는 "최고의 피자"를 구매하려고 한다. 최고의 피자란, 피자 가게에서 주문할 수 www.acmicpc.net 초기의 값 C // A 를 기준으로 분모와 분자에 값을 계속 더하여 최고의 피자를 찾는 문제이다. 분모는 토핑이 추가될 때마다 일정하게 더해주고(B) 분자에는 토핑의 열량을 더해준다. 즉, 토핑의 열량을 큰 것부터 처리했을 때, answer 이 감소하는 시점부터 토핑의 열량은 계속 전보다 작은 값을 더해주므로 증가하고 감소하는 시점에 break 를 걸어준다. 수학적으로 증명하기는 쉽다. 예를 들면 1과..
https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 파스칼의 삼각형의 원리를 이용하여 다리를 지을 수 있는 경우의 수를 동적 계획법으로 구현할 수 있다. 동적 계획법으로 조합을 구한다. import sys dp = [[0] * 31 for i in range(31)] for i in range(31): dp[i][0] = 1 for i in range(1, 31): for j in range(1, 31): dp[i][j] = dp[i-1][j-1]..
https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net heapq 를 이용하여 bigger 과 smaller 인 queue 를 만들어서 기준이 되는 중간값(bigger[0]) 을 기준으로 크면 bigger, 작으면 smaller 에 추가해준다. bigger[0] 은 값이 추가될 때, 그 값이 smaller 의 어떤 원소보다 작을 수 있으므로 smaller[0] 과 비교하여 작으면 교체해준다. import sys, heapq N = in..
https://www.acmicpc.net/problem/2810 2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net 문제를 잘 읽어보면 커플이 문제다. import sys N = int(sys.stdin.readline()) S = sys.stdin.readline().strip() n = 0 for i in S: if i == 'L': n += 1 answer = N if n == 0 else N - (n // 2) + 1 print(answer)
https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 파이썬에서 진수를 쉽게 나타낼 수 있다. import sys O = '0o' + str(sys.stdin.readline().strip()) print(bin(int(O, 8))[2:])
https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net heapq 를 이용하여 처음에 올 수 있는 자리에 수 중 가장 큰 것을 뽑고 index 를 비교하여 다음으로 올 수 있는 수 중에서 가장 큰 값을 차례대로 뽑으면 된다. 예를 들어, N = 10, K = 4, number = 4177252841 라고 하자. 그럼 가장 처음에 올 수 있는 수는 417(1)7(2)2 중 하나의 수가 된다. 52841 중 하나를 택하면 6자리의 수가 될 수 없다. 가장 큰 값인 7과 7의 인덱스(I)를 잡는다. 다음으로, 417(1)7(2)25 ..
https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net lambda 를 이용하여 문장의 단어를 하나씩 뒤집을 수 있다. 문자열 또는 배열을 역으로 나열하고 싶을 때는 [::-1] 을 쓰면 된다. import sys N = int(sys.stdin.readline()) for i in range(N): S = list(sys.stdin.readline().strip().split()) answer = ' '.join(map(lambda x : x..