코테준비/백준
[백준] 12953번: 오리 - Python
예찬예찬
2025. 6. 2. 15:50
728x90
반응형
링크: https://www.acmicpc.net/problem/12933
아이디어
- 현재 문자가 해당 오리에게 올 차례인지 확인
- 각 배열의 길이를 통해 몇번째 문자가 올지 판단하면 될듯
- 맞는 오리를 찾아 해당 문자 추가
- 오리 울음이 완료되면 해당 오리를 ("")로 처리
- 문자를 넣을 수 있는 오리를 못 찾았는데 그 문자가 q이면 배열 생성
- q가 아니면 -1 반환
- 모든 문자를 순회하며 동시에 울고 있는 오리 수를 추적하고 그 최대값 저장
구현
sound = list(input())
li = [] # 각 오리의 울음 진행 상태를 저장하는 리스트
max_cnt = 0
for tmp in sound:
placed = False
for j in range(len(li)):
now = li[j]
expected = "quack"[len(now)] # 현재 오리가 기대하는 다음 문자
if tmp == expected:
li[j] += tmp
if li[j] == "quack": # 오리 울음 완성 시 초기화
li[j] = ""
placed = True
break
# 어떤 오리에도 넣지 못했다면 잘못된 순서
if not placed:
if tmp == "q":
li.append("q")
placed = True
else:
print(-1)
exit()
# 현재 울고 있는 오리 수 세기
current = 0
for duck in li:
if duck != "":
current += 1
max_cnt = max(max_cnt, current)
# 모든 오리가 울음을 끝냈는지 확인
for duck in li:
if duck != "":
print(-1)
exit()
print(max_cnt)
마무리
q인지 먼저 판단하고 배열을 무조건 생성하게 하니 문제가 있었다.
""인 배열이 있으면 여기에 q을 넣어야 정확한 오리의 수를 판별할 수 있었는데 이를 인지하지 못하고 구현하니 시간이 좀 오래걸렸다.
728x90
반응형