본문 바로가기
개발/문제풀이

구름레벨 '계수기 만들기' 파이썬 코드

by beomcoder 2023. 10. 17.
728x90
반응형
https://level.goorm.io/exam/43061/%EA%B3%84%EC%88%98%EA%B8%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0/quiz/1
 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io

 

m = int(input())
line_maxs = [v + 1 for v in map(int, input().split())]
line_inits = list(map(int, input().split()))
answers = [0] * m 
count = int(input())

for a, b in zip(line_maxs, line_inits): 
	if a <= b: # 최대값보다 큰 초기값일 경우 -1
		print(-1)
		break
else:
	for i in range(m-1, -1, -1):
		count, answers[i] = divmod((line_inits[i] + count), line_maxs[i])

	print(''.join(map(str, answers)))
    
    
'''
라인별로 최대값과 초기값을 저장시켜준다.
최대값에서 1을 더해주는 이유는 divmod를 사용하여 계산하기 위해 1을 더해주었다.
문제에서 -1이 나오는 경우는 최대값보다 초기값이 높게 설정되어 있는 경우이다.

그래서 최대값과 초기값을 zip으로 묶어 for문을 돌려 
최대값보다 큰 초기값이라면 -1을 출력하고 종료한다.

- for else 구문은 for문이 중간에 break등으로 끝나지 않으면 else문을 실행시킨다.

else문으로 온다면 뒤에서부터 divmod로 몫과 나머지를 계산하여 
몫은 왼쪽칸으로 넘기고 나머지는 정답배열에 넣는다.
'''
728x90
반응형

댓글