코테준비/백준

[백준] 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
반응형