본문 바로가기

파이썬 알고리즘 (인프런)/코드 구현력 기르기

(10)
10. 점수계산 # 점수계산 def run(N, a): scores = [0] * N if a[0] == 1: scores[0] = 1 for i in range(1, N): if a[i] == 1: scores[i] = scores[i-1] + 1 return sum(scores) def run(N, a): score, tot = 0, 0 for x in a: if x == 1: score += 1 tot += score else: score = 0 return tot # 총점 N = int(input()) a = list(map(int, input().split())) print(run(N, a))
9. 주사위 게임 # 주사위 게임 def reward(a): a.sort() if len(set(a)) == 1: return 10000 + a[0] * 1000 elif len(set(a)) == 2: return 1000 + a[1] * 100 else: return a[2] * 100 N = int(input()) max_r = 0 for _ in range(N): a = list(map(int, input().split())) r = reward(a) max_r = max(max_r, r) # 최대 리워드 print(max_r)
8. 뒤집은 소수 # 뒤집은 소수 def reverse(x): x = str(x) x = x[::-1] return int(x) def reverse(x): res = 0 while x > 0: res = res * 10 + x % 10 x //= 10 return res def isPrime(x): if x == 1: return False i = 2 while i * i
7. 소수 (에라토스테네스 체) # 소수 def run(N): ck = [0] * (N+1) primes = [] for n in range(2, N+1): if ck[n] == 1: continue primes.append(n) for i in range(n*2, N+1, n): ck[i] = 1 return len(primes) # 소수의 갯수 N = int(input()) print(run(N))
6. 자릿수의 합 # 자릿수의 합 def run(nums): max_s, num = 0, 0 for n in nums: s = 0 for ch in str(n): s += int(ch) if s > max_s: # 최대일때 숫자 max_s = s num = n return num def run(nums): max_s, idx = 0, 0 for i, n in enumerate(nums): s = 0 while n > 0: s += n % 10 n //= 10 if s > max_s: # 최대일때 인덱스 max_s = s idx = i return nums[idx] N = int(input()) nums = list(map(int, input().split())) print(run(nums))
5. 정다면체 # 정다면체 def run(N, M): a = [0] * (N + M + 1) for i in range(1, N + 1): for j in range(1, M + 1): a[i+j] += 1 max_cnt, res = -1e9, [] for i, cnt in enumerate(a): if cnt > max_cnt: # 최대일때 숫자들 max_cnt = cnt res = [i] elif cnt == max_cnt: res.append(i) return res N, M = map(int, input().split()) ans = run(N, M) [print(x, end=" ") for x in ans]
4. 대표값 # 대표값 def run(N, nums): avg = int(sum(nums) / N + 0.5) # 반올림 min_d, score, idx = 1e9, 0, 0 for i, s in enumerate(nums): d = abs(s - avg) if d score: score = s idx = i return (avg, idx) N = int(input()) nums = list(map(int, input().split())) avg, idx = run(N, nums) print(avg, idx+1)
3. K번째 큰 수 # K번째 큰 수 def run(N, K, nums): s = set() for i in range(N): for j in range(i+1, N): for k in range(j+1, N): s.add(nums[i] + nums[j] + nums[k]) a = sorted(list(s), reverse=True) return a[K-1] # K번째 큰 수 N, K = map(int, input().split()) nums = list(map(int, input().split())) print(run(N, K, nums))