🎸/알고리즘 스터디
[ EPPER 2021] 하 문제 모음
컴공생 C
2021. 3. 18. 00:01
반응형
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
user_input = int(input())
a=[]
for i in range(user_input):
a.append(int(input()))
def solution(n, arr):
arr=sorted(arr)
if (n==1):
avg=arr[0]
else:
for i in range(n-1):
avg=(arr[0]+arr[1])/2
arr.pop(0)
arr.pop(0)
arr.insert(0,avg)
return avg
print("%.6f" %solution(user_input,a))
답이 추구하는 가장 이상적인 상황은 배열이 오름차순으로 정렬되어있는 상태에서 평균을 구해나가는 것이다.
주의해야할 것은 1) 개수가 1인 상황과 2) n개의 원소가 있을때 연산은 총 n-1번 수행 3) pop을 할때 그냥 pop()하면 마지막 원소가 나와버림
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
user_input = int(input())
def solution(n):
rn=n//15+1
sn=n%15
if(sn==0):
sn=15
rn-=1
return rn,sn
print("%d %d" %solution(user_input))
이문제는 좀 쉬운 편이었다.
고려해야할 상황은
1) 방번호는 몫+1인데 만약 딱 15의 배수면 몫-1일 해줘야함
2)15의 배수명이면 나머지가 0이기에 sn=15로 설정해주어야함
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
user_input = int(input())
price=int(input())
def solution(pay,price):
money=[50000,10000,5000,1000,500,100,50,10]
#거스름돈 계산
n=pay-price
cnt=0
kind=0
for i in money:
if(n//i):
kind+=1
cnt+=n//i
n%=i
return kind, cnt
print("%d %d" %solution(user_input, price))
이것도 쉬웠다.
1) 배열에 돈의 종류를 저장해 둘것
2) 잔돈을 거슬러주면 나머지로 초기화 해주어야함
user_input=input()
def solution(n):
ans=''
cnt=0
a=ord("A")
if(n[0]=='1'):
ans='1'
for i in range(len(n)-1):
if(n[i]!=n[i+1]):
ans+=chr(a+cnt)
cnt=0
else:
cnt+=1
ans+=chr(a+cnt)
return ans
print("%s"%solution(user_input))
1) ord, chr 함수 기억하기
- A 의 아스키 값을 a로 사용해서 사실상 cnt=1 로 시작하는 것과 같다.
2) for문에 len(n)-1 꼭 해야함
반응형