파이썬 문제풀이
[코드트리 삼성기출] 바이러스 검사
냄비짱
2023. 10. 6. 02:18
728x90
📌문제 출처
코드트리 삼성 SW 역량테스트 기출문제
https://www.codetree.ai/training-field/frequent-problems/problems/virus-detector
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
📗 풀이 코드
- solution 1 : ceil 사용
import math
def solution(n,customers, manager, member):
return n + sum([(math.ceil((tmp_c - manager) / member)) if tmp_c >= manager else 0 for tmp_c in customers])
if __name__ == '__main__':
a,b,c = open(0).readlines()
n = int(a)
customers = map(int,b.split())
manager, member = map(int,c.split())
print(solution(n,customers,manager,member))
- solution 2 : divmod, if 문 사용
def solution(n,customers, manager, member):
ans = n
for tmp_c in customers :
if tmp_c <= manager :
continue
a,b = divmod(tmp_c-manager,member)
ans += a+1 if b else a
return ans
if __name__ == '__main__':
a,b,c = open(0).readlines()
n = int(a)
customers = map(int,b.split())
manager, member = map(int,c.split())
print(solution(n,customers,manager,member))
💯 풀이 설명
- 하나의 식당마다 팀장은 한명씩 무조건 들어가므로 적어도 n명의 팀장이 필요하다.
- 따라서 이후 팀원의 수를 파악할 때는 팀장 한 명이 체크하는 고객 수는 미리 빼고 남은 고객 수를 확인한다.
- 이때 식당 고객 수 보다 팀장이 체크하는 고객 수가 많아 남은 고객 수가 없다면 그 식당은 더이상 직원이 필요없다.
- (남은 고객 수/팀원 한 명이 체크하는 고객 수) 연산 시 나머지가 있다면 몫에 1을 더한만큼 직원이 필요하고,
나머지가 없다면 몫만큼 직원이 필요하다.
이 연산을 solution 1에서는 ceil 함수를 써줬고, solution 2에서는 divmod로 몫과 나머지를 구하여 조건문으로 해결했다. - 결과는 ceil 함수를 써준 것이 약간 더 빨랐다.