본문 바로가기
반응형

구현35

[BOJ][Python]1918 풀이 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net def f(equation): priority = {'+':1, '-':1,'*':2,'/':2,'(':0} stack = [] for i in equation: if i.isalpha(): print(i, end='') else: if len(stack) == 0 or i == '(': stack.append(i) elif i == ')': while True: tmp = stack.pop(.. 2023. 8. 8.
[BOJ][Python]28432 풀이 https://www.acmicpc.net/problem/28432 28432번: 끝말잇기 첫 줄에 끝말잇기 기록의 길이 $N$ 이 주어집니다. $(1 \le N \le 100)$ 둘째 줄부터 다음 $N$개의 줄에는 끝말잇기의 기록 $S_1, \cdots, S_N$이 한 줄에 하나씩 주어집니다. 여기서, 하나의 $S_i$는 “?” 로 www.acmicpc.net import sys ssr = sys.stdin.readline n = int(ssr()) s = [] loc = 0 for i in range(n): word = ssr().rstrip() s.append(word) if word == '?': loc = i m = int(ssr()) first, last = '', '' a = '' if n .. 2023. 8. 7.
[BOJ][Python]18110 풀이 https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net import sys ssr = sys.stdin.readline n = int(ssr()) scores = [int(ssr()) for _ in range(n)] scores.sort() if n == 0: print(0) elif n < 4: print(round(sum(scores)/len(scores) + 1e-7)) else: cut = round(n*15/10.. 2023. 7. 20.
[BOJ][Python]1283 풀이 https://www.acmicpc.net/problem/1283 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net import sys ssr = sys.stdin.readline def query1(words): for i in range(len(words)): words[i] = list(words[i]) if words[i][0] not in hotkeys: hotkeys[words[i][0].lower()] = 0 hotkeys[words[i][0].upper()] = 0 words[i][.. 2023. 7. 20.
[BOJ][Python] 1138 풀이 https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net n = int(input()) line = list(map(int, input().split())) ans = [0 for _ in range(n)] for i in range(len(line)): # 현재 선택된 친구 cnt = 0 for j in range(len(line)): # 바꿔가면서 비교중인 자리 if ans[j] == 0 and cnt == line[i]: ans[j] = i.. 2023. 7. 16.
[BOJ][Python]1569 풀이 https://www.acmicpc.net/problem/1569 1569번: 정사각형으로 가리기 정사각형으로 가려지는 점이란, 어떤 점이 그 정사각형의 한 변 위에 놓여져 있을 때, 정사각형으로 가려진다고 한다. 점이 N개가 주어진다. N개의 점 모두를 가릴 수 있는 정사각형을 구하는 프 www.acmicpc.net import sys ssr = sys.stdin.readline def is_available_a(points, x, y, l): for i in points: if x 2023. 7. 15.
[BOJ][Python]1515 풀이 https://www.acmicpc.net/problem/1515 1515번: 수 이어 쓰기 세준이는 1부터 N까지 모든 수를 차례대로 공백없이 한 줄에 다 썼다. 그리고 나서, 세준이가 저녁을 먹으러 나간 사이에 다솜이는 세준이가 쓴 수에서 마음에 드는 몇 개의 숫자를 지웠다. 세준 www.acmicpc.net line = input() ans = 0 while len(line): ans += 1 check = str(ans) while len(check) > 0 and len(line) > 0: if check[0] == line[0]: line = line[1:] check = check[1:] print(ans) 구현 문제는 항상 표기 난이도보다 좀 어려운 것 같습니다. 아이디어는 떠오르는데 그걸.. 2023. 7. 14.
[BOJ][Python]1347 풀이 https://www.acmicpc.net/problem/1347 1347번: 미로 만들기 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍 www.acmicpc.net def f(mx, my): for i in range(my+1): for j in range(mx+1): labyrinth = [['#' for _ in range(mx+1)] for _ in range(my+1)] posx, posy = j, i labyrinth[posy][posx] = '.' for k in route: if 0 2023. 7. 9.
[BOJ][Python]1291 풀이 https://www.acmicpc.net/problem/1291 1291번: 이면수와 임현수 11은 메갈루젼 문명의 어비스 오엘 우테에 속하지만 각 자리수의 총합이 1+1=2, 즉 짝수이므로 이면수가 아니고 chicken number혹은 starcraft number도 아니고 합성수도 아니므로 임현수가 아니다. 고로 www.acmicpc.net n = int(input()) ans = [] def factorization(num, prime_factors): if num == 1: return prime_factors for i in range(2, num+1): if num % i == 0: factorization(num//i, prime_factors) prime_factors.append(i) .. 2023. 7. 8.
[BOJ][Python]1213 풀이 1213번: 팰린드롬 만들기첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.www.acmicpc.netfrom collections import defaultdicts = input()odd = 0alphabets = defaultdict(int)ans, mid = '', ''for i in s: alphabets[i] += 1 if len(s) % 2 == 0: for alphabet, cnt in sorted(alphabets.items()): ans += alphabet*(cnt//2) if cnt % 2 == 1: odd +=.. 2023. 7. 5.
반응형