본문 바로가기
알고리즘/완전탐색

[백준][Python] 5883번 아이폰 9S

by 임짠짠 2022. 7. 26.
반응형
 

5883번: 아이폰 9S

사람 9명이 줄을 서있고 각 사람이 원하는 용량의 크기는 2, 7, 3, 7, 7, 3, 7, 5, 7 이다. 용량 3을 원하는 사람을 줄에서 빼버리면, 줄은 2, 7, 7, 7, 7, 5, 7가 되고, 7을 원하는 사람이 4명이 연속된 구간이

www.acmicpc.net

 

코드

import sys
n = int(input())
b_list = [0]*n
for i in range(n):
	b_list[i] = int(sys.stdin.readline())
b_set = set(b_list)
max_cnt = 1
for b in b_set:
	cnt = 1
	num = -1
	for i in range(n):
		if b_list[i] != b:
			if num == -1:
				num = b_list[i]
			else:
				if num == b_list[i]:  # 이전 수와 같은 경우
					cnt += 1
					
				else:  # 이전 수와 다른 경우
					max_cnt = max(max_cnt,cnt) 
					num = b_list[i]
					cnt = 1
	max_cnt = max(max_cnt,cnt)
print(max_cnt)

 

설명

원하는 용량의 크기를 b_list에 저장하고 b_set에 set 함수를 이용하여 용량의 종류를 중복되지 않게 저장했다.

b_set에 있는 값을 차례대로 가져와서 해당 용량을 원하는 사용자를 뺐을 때 최댓값을 max_cnt에 저장했다. 

 

위의 예제의 경우 b_set = {2,3,5,7} 이므로 처음에 2를 빼는 경우 연속되는 경우가 7,7 이므로 max_cnt가 2가 된다. 

다음으로 3을 빼는 경우 연속되는 경우가 7,7,7,7 이므로 max_cnt가 4로 갱신된다. 이 과정을 반복하다 보면 마지막에 max_cnt값이 최댓값이 된다.

반응형

댓글