📝 문제 설명
>
[문제]
영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다.
입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다.
- 맨 처음에는 딸기우유를 한 팩 마신다.
- 딸기우유를 한 팩 마신 후에는 초코우유를 한 팩 마신다.
- 초코우유를 한 팩 마신 후에는 바나나우유를 한 팩 마신다.
- 바나나우유를 한 팩 마신 후에는 딸기우유를 한 팩 마신다.
영학이는 우유 축제가 열리고 있는 우유거리에 왔다. 우유 거리에는 우유 가게들이 일렬로 늘어서 있다.
영학이는 우유 거리의 시작부터 끝까지 걸으면서 우유를 사먹고자 한다.
각각의 우유 가게는 딸기, 초코, 바나나 중 한 종류의 우유만을 취급한다.
각각의 우유 가게 앞에서, 영학이는 우유를 사마시거나, 사마시지 않는다.
우유거리에는 사람이 많기 때문에 한 번 지나친 우유 가게에는 다시 갈 수 없다.
영학이가 마실 수 있는 우유의 최대 개수를 구하여라.
[요약]
- 영학이가 [딸기우유 > 초코우유 > 바나나우유] 순서대로 마실건데, 그런식으로 먹으면 최대 몇개까지 가능한가?
https://www.acmicpc.net/problem/14720
🎨 풀이
💡 전체 코드
import sys
N = int(input())
milk = list(map(int, sys.stdin.readline().split()))
kind_of_milk = 0
count = 0
for i in range(len(milk)):
if milk[i] == kind_of_milk:
count += 1
if kind_of_milk == 2 :
kind_of_milk = -1
kind_of_milk += 1
print(count)
> 핵심 : 포인터로 가리키면서 무슨 우유를 먹어야하는지 체크하고 비교하기
🍦 코드 설명 (실행 순서대로 나열)
# main
N = int(input())
milk = list(map(int, sys.stdin.readline().split()))
kind_of_milk = 0
count = 0
1. N, milk를 입력받는다.
- N : 우유 가게 수
- milk : 우유 가게 종류 리스트
2. kind_of_milk 를 0으로 초기화해둔다.
- kind_of_milk : 지금 마셔야할 우유 종류
@ for문 (3번~7번)
for i in range(len(milk)):
if milk[i] == kind_of_milk:
count += 1
if kind_of_milk == 2 :
kind_of_milk = -1
kind_of_milk += 1
print(count)
3. for문을 돌린다. (milk 리스트의 길이만큼!)
4. 만약, milk[i] 가 kind_of_milk와 같다면! (아니라면 5번~7번 다 뛰어넘은 후 계속 for문 진행)
5. count += 1 을 해준다.
6. 만약, kind_of_milk가 2라면, -1로 바꾼다.
- 딸기우유로 바꿔줘야하니까 미리 -1로 바꿔두는 거! 뒤에서 +1을 어짜피 할 거니까.
7. kind_of_milk += 1 을 해준다.
8. count를 출력해준다.
끝~
⭐ 느낀점
> 우유 먹고싶다. 약간 딸기우유 먹고싶다. 하하. 이 문제도 그냥 순서대로 맞는 지 체크해주고 더해주면 되기 때문에! 잘풀었다고 생각한다. 굿굿
'알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 1193번 - 분수찾기 (파이썬) (0) | 2022.08.04 |
---|---|
[백준] 18310번 - 안테나 (파이썬) (0) | 2022.08.04 |
[백준] 10250번 - ACM 호텔 (파이썬) (0) | 2022.08.01 |
[백준] 14659번 - 한조서열정리하고옴ㅋㅋ (파이썬) (0) | 2022.07.31 |
[백준] 2869번 - 달팽이는 올라가고 싶다 (파이썬) (0) | 2022.07.30 |