본문 바로가기
반응형

백준224

[BOJ][Python]1541번 풀이 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net s = input() check = 1 num = '' ans = [] for i in s: if i == '-': ans.append(check*int(num)) num='' check = -1 elif i == '+': ans.append(check*int(num)) num='' else: num += i ans.append(check*int(num)) # print(ans) print(.. 2022. 6. 27.
[BOJ][Python]2720번 풀이 https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net t = int(input()) d = [25,10,5,1] for _ in range(t): c = int(input()) ans = [] for i in d: ans.append(c//i) c %= i print(*ans) solved.ac 사이트에서 개인 정보를 확인하면 어떤 알고리즘의 문제를 많이 풀었는지 그래프로 나타내주는 기능이 있는데요. 그리디를 하나도 안 푼 수준으로 안풀었더군요. 그래서 그런가 실버 상위권 그리디 문제가 나오면 자주 막히는 것 같아서 예.. 2022. 6. 27.
[BOJ][Python]11727번 풀이 https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net t = [0 for _ in range(1001)] t[1] = 1 t[2] = 3 for i in range(3,1001): t[i] = t[i-1] + 2*t[i-2] print(t[int(input())]%10007) 위 문제와 비슷한 문제는 이제 너무 많이 풀어봤죠? 몇 개 정도 손으로 써본 다음에 규칙만 찾으면 됩니다. 다만 그 규칙을 발견하는게 시간이 천차만별로 걸린다는 점이죠. 처음에 어떻게 될 것이다 하고 세운 .. 2022. 6. 26.
[BOJ][Python]11659번 풀이 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net import sys ssr = sys.stdin.readline n,m = map(int, ssr().split()) num = [0] + list(map(int, ssr().split())) t = [0 for _ in range(n+1)] for i in range(1,n+1): t[i] = t[i-1] + num[i] for _ in range(m): a,b = map.. 2022. 6. 25.
[BOJ][Python]7662번 풀이 https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net import heapq import sys ssr = sys.stdin.readline t = int(ssr()) for _ in range(t): minh, maxh = [], [] k = int(ssr()) visited = [False for _ in range(k)] for i in range(k): c = ssr().split() if c[0] == 'I': heapq.heappush.. 2022. 6. 24.
[BOJ][Python]1748번 풀이 https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net n = int(input()) num = [100000000,10000000,1000000,100000,10000,1000,100,10,0] ans = 0 for i in num: if n =0: ans += (n-i+1)*len(str(i)) n = int('9'*(len(str(i-1)))) print(ans) 아마 파이썬을 쓰시는 분은 다들 보자마자 문자열로 바꿔서 다 더한다음에 길이 출력하면 되겠네 하고 생각하셨을 것 같습니다. 저도 그랬구요. 다만 문제를 내신 분들도 그걸 고려해서인지 그렇게 풀면 시간초과가 .. 2022. 6. 23.
[BOJ][Python]7576번 풀이 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net import sys from collections import deque ssr = sys.stdin.readline def sol(r,c,day): if visited[r][c] == True: return visited[r][c] = True for i in range(4): if 0 2022. 6. 23.
[BOJ][Python]2960번 풀이 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net n,k = map(int, input().split()) num = [i for i in range(2,n+1)] cnt = 0 while num: p = num[0] for i in num: if i%p == 0: num.remove(i) cnt += 1 if cnt == k: print(i) break 에라토스테네스의 체 문제는 백준에 상당히 많은데요. 그 중에서도 쉬운 편이 아닌가 생각합니다. 일단 n의 최대 범위가 1000까지이기 때문에 이중 반복문의 최대가 10^6번의 연산이.. 2022. 6. 22.
[BOJ][Python]1931번 풀이 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net import sys ssr = sys.stdin.readline n = int(ssr()) c = [list(map(int, ssr().split())) for _ in range(n)] c.sort(key= lambda x:(x[1], x[0])) cnt = 1 end = c[0][1] for i in range(1, n): if c[i][0] >= end: cnt += 1 end = c[i][1] print(cnt) 이번 문제는 푸는 방법을 어떻게든 생각해내는게 전부인 문제입니다. 다르게 말하면 푸는 방법을 .. 2022. 6. 21.
[BOJ][Python]10162번 풀이 https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net t = int(input()) b= [300,60,10] ans=[] if t%10 != 0: print(-1) else: for i in range(3): cnt = 0 cnt += t//b[i] t = t%b[i] ans.append(cnt) print(*ans) 이번 문제는 그리디 알고리즘입니다. 크게 어려운 문제는 아니고 천천히 문제에서 시키는 사항을 따라가면 풀 수 있는 문제입니.. 2022. 6. 18.
반응형