사용자 도구

사이트 도구


ps:problems:boj:13022

늑대와 올바른 단어

ps
링크https://www.acmicpc.net/problem/13022
출처BOJ
문제 번호13022
문제명늑대와 올바른 단어
레벨실버 1
분류

기초

시간복잡도O(n)
인풋사이즈n<=50
사용한 언어Python
제출기록30864KB / 68ms
최고기록60ms
해결날짜2022/01/19

풀이

  • 그냥 주어진 조건에 맞는지 시키는대로 확인하면 되는 문제. 같은 글자별로 그룹을 만들어 놓고 하면 좀더 간단한데, w그룹, o그룹, l그룹, f그룹이 반복되는 순서로 등장해야 하고, 이것을 한 사이클이라 하면 한 사이클 안의 그룹들의 글자수가 전부 똑같아야 한다. 이것을 만족하면 올바른 단어이다.
  • 시간복잡도는 O(n)

코드

"""Solution code for "BOJ 13022. 늑대와 올바른 단어".

- Problem link: https://www.acmicpc.net/problem/13022
- Solution link: http://www.teferi.net/ps/problems/boj/13022
"""

import itertools


def main():
    word = input()

    chars = [k for k, _ in itertools.groupby(word)]
    lengths = (len(list(g)) for _, g in itertools.groupby(word))
    is_correct = (
        len(chars) % 4 == 0 and
        all(ch1 == ch2 for ch1, ch2 in zip(chars, itertools.cycle('wolf'))) and
        all(l1 == l2 == l3 == l4 for l1, l2, l3, l4 in zip(*([lengths] * 4))))

    print('1' if is_correct else '0')


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
W U G P S
 
ps/problems/boj/13022.txt · 마지막으로 수정됨: 2022/01/19 15:37 저자 teferi