본문 바로가기
반응형

Problem Solving/BOJ225

[BOJ][Python]4344 풀이 https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다. www.acmicpc.net import sys ssr = sys.stdin.readline c = int(ssr()) for _ in range(c): n_s = list(map(int, ssr().split())) m = sum(n_s[1:])/n_s[0] cnt = 0 for i in range(n_s[0]): if n_s[i+1] > m: cnt += 1 ans = cnt/n_s[0]*100*1000 if ans - int(ans) < 0.5: ans .. 2023. 6. 28.
[BOJ][Python]1015 풀이 https://www.acmicpc.net/problem/1015 1015번: 수열 정렬 P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주 www.acmicpc.net n = int(input()) tmp = list(map(int, input().split())) a = [(tmp[i], i) for i in range(n)] a_s = sorted(a, key=lambda x:x[0]) for i in range(n): for j in range(n): if a[i][1] == a_s[j][1]: prin.. 2023. 6. 27.
[BOJ][Python]1094 풀이 https://www.acmicpc.net/problem/1094 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net x = int(input()) w = [64, 32, 16, 8, 4, 2, 1] c = 0 cnt = 0 for i in range(len(w)): if w[i] > x: continue elif w[i] == x: print(1) break else: if c + w[i] 2023. 6. 26.
[BOJ][Python]1032 풀이 https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net import sys ssr = sys.stdin.readline n = int(ssr()) ans = list(ssr().rstrip()) for _ in range(n-1): tmp = list(ssr().rstrip()) for i in range(len(tmp)): if ans[i] != tmp[i]: ans[i] = '?' print(''.join(ans)) 어렵지 않은 문제입니다. .. 2023. 6. 25.
[BOJ][Python]1076 풀이 https://www.acmicpc.net/problem/1076 1076번: 저항 전자 제품에는 저항이 들어간다. 저항은 색 3개를 이용해서 그 저항이 몇 옴인지 나타낸다. 처음 색 2개는 저항의 값이고, 마지막 색은 곱해야 하는 값이다. 저항의 값은 다음 표를 이용해서 구한 www.acmicpc.net t = {'black':'0', 'brown':'1', 'red':'2', 'orange':'3', 'yellow':'4', 'green':'5', 'blue':'6', 'violet':'7', 'grey':'8', 'white':'9'} print(int(t[input()]+t[input()]+'0'*int(t[input()]))) 처음엔 별 생각없이 저항이 나와서 반가웠던 문제인데 풀어보니 약간 의.. 2023. 6. 24.
[BOJ][Python]1075 풀이 https://www.acmicpc.net/problem/1075 1075번: 나누기 첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다. www.acmicpc.net n = int(input()[:-2] + '00') f = int(input()) if n % f == 0: print('00') else: tmp = n // f * f print(str(tmp + f)[-2:]) 이번 문제도 문제 자체가 어렵다기 보다는 약간 머리를 굴려야 하는 문제입니다. n의 10의 자리수, 1의 자리수를 바꿔서 f의 가능한 한 작은 배수를 만들 수 있는 두 숫자를 출력해야 합니다. 쉽게 보면 그냥 최대.. 2023. 6. 23.
[BOJ][Python]1009 풀이 https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net import sys ssr = sys.stdin.readline t = int(ssr()) c = [[10], [1], [2, 4, 8, 6], [3, 9, 7, 1], [4, 6], [5], [6], [7, 9, 3, 1], [8, 4, 2, 6], [9, 1]] for _ in range(t): a, b = map(int, ssr().split()) i = a%10 tmp = b%len(c[i])-1 p.. 2023. 6. 22.
[BOJ][Python]1247 풀이 https://www.acmicpc.net/problem/1247 1247번: 부호 총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거 www.acmicpc.net import sys ssr = sys.stdin.readline for _ in range(3): n = int(ssr()) s = 0 for _ in range(n): s += int(ssr()) if s == 0: print('0') elif s < 0: print('-') else: print('+') 그렇게 어려운 문제는 아닌데 시간을 줄이는 방법을 좀 고민해.. 2023. 6. 21.
[BOJ][Python]1264 풀이 https://www.acmicpc.net/problem/1264 1264번: 모음의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄 www.acmicpc.net while True: s = input() cnt = 0 if s == '#': break else: for i in s.lower(): if i in ['a', 'e', 'i', 'o', 'u']: cnt += 1 print(cnt) lower로 바꾸지 않고 대문자 판단도 시켜봤는데 여전히 같더라구요. 미리 vowel이라는 리스트를 만들어 놓고 in 메소드를 활용하면 좀 더.. 2023. 6. 20.
[BOJ][Python]14501 풀이 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net from collections import deque n = int(input()) t = {n+1:(16,16)} q = deque([(1, 0)]) ans = [] for i in range(1, n+1): a, b = map(int, input().split()) t[i] = (a, b) while q: tmp = q.popleft() c, d = t[tmp[0]] if tmp[0]+c 2023. 3. 4.
반응형