파이썬 우유 축제(백준 BOJ 14720)


문제

영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다.

입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다.

  1. 맨 처음에는 딸기우유를 한 팩 마신다.
  2. 딸기우유를 한 팩 마신 후에는 초코우유를 한 팩 마신다.
  3. 초코우유를 한 팩 마신 후에는 바나나우유를 한 팩 마신다.
  4. 바나나우유를 한 팩 마신 후에는 딸기우유를 한 팩 마신다.

영학이는 우유 축제가 열리고 있는 우유거리에 왔다. 우유 거리에는 우유 가게들이 일렬로 늘어서 있다.

영학이는 우유 거리의 시작부터 끝까지 걸으면서 우유를 사먹고자 한다.

각각의 우유 가게는 딸기, 초코, 바나나 중 한 종류의 우유만을 취급한다.

각각의 우유 가게 앞에서, 영학이는 우유를 사마시거나, 사마시지 않는다.

우유거리에는 사람이 많기 때문에 한 번 지나친 우유 가게에는 다시 갈 수 없다.

영학이가 마실 수 있는 우유의 최대 개수를 구하여라.


입력

첫째 줄에 우유 가게의 수 N이 주어진다. (1 ≤ N ≤ 1000)

둘째 줄에는 우유 가게 정보가 우유 거리의 시작부터 끝까지 순서대로 N개의 정수로 주어진다.

0은 딸기우유만을 파는 가게, 1은 초코우유만을 파는 가게, 2는 바나나우유만을 파는 가게를 뜻하며, 0, 1, 2 외의 정수는 주어지지 않는다.


출력

영학이가 마실 수 있는 우유의 최대 개수를 출력하시오.


예제 입력 1

7
0 1 2 0 1 2 0

예제 출력 1

7


📝 풀어보기

📌 영학이는 무조건 처음에 딸기우유를 마신다. 그래서 딸기우유를 마시기 전까진 어떠한 우유도 마시지 않는다.

일단 골목에 나열된 상점의 수 n, 마주치는 우유가게 milk를 생성해서 입력받는다.

딸기우유를 만나면 카운트 하기위해 count에 0을 저장하고 n의 횟수 동안 milk를 순회하면서 count를 3으로 나눈 나머지를 비교한다. 3으로 나머지를 찾는 이유는 우유 종류가 3가지 뿐이기 때문이다.

여기서 count와 milk[i]의 값이 같다면, count를 1 증가시키고 순회가 끝난 후 합계를 출력한다.

# 시작은 무조건 0(딸기우유)
n = int(input())
milk = list(map(int,input().split()))
# print(milk)

count = 0 # 딸기우유(0)

for i in range(n): # n의 횟수만큼
    if milk[i] == count % 3: # 리스트 값이 카운트 나누기 3의 나머지와 같으면
        count += 1 # 카운트 증가 

print(count)

관심있을 포스팅