백준 1972번 파이썬

정재혁·2022년 8월 8일
0

백준 1972번 놀라운 문자열 문제

문제


입력 및 출력값


풀이:

해당 문제의 경우 문자열이 주어졌을 때, 각 문자로부터 1칸씩 떨어진 수들, 2칸씩 떨어진 수들,, 등으로 구성된 각 리스트 안에서 중복없이 존재한다면 해당 문자열은 놀라운 문자열이 된다.
이를 위해 파이썬의 set 함수를 활용해 문제를 풀었다. 만약 AAA라고 한다면 0번째와 1번 째에 위지치한 문자는 AA, 1번째와 2번째에 위치한 문자 역시 AA가 되므로 이를 각각 SET에 추가한다면 SET에는 AA하나만 존재할 것이다.(SET은 집합으로 중복을 허용하지 않는다.)이러한 방식으로 시작지점 0부터 i(띄어쓰는 값)을 빼주는 길이만큼의 값과 set의 길이가 같다면 카운트하고 이를 0번 인덱스와 s의 마지막 인덱스까지의 리스트가 모두 중복이 없다면 'is surprising.'이라는 문구를 출력하도록 했다.

특히 문자가 하나만 존재하는 경우 무조건 위의 조건을 만족하기 때문에 따로 분류해서 취급했다.

코드:

while True:
    s = input()
    if s =='*':
        break
    else:
        if len(s) > 1:
            cnt = 0
            for i in range(1,len(s)):
                ans_set = set()
                for j in range(0,len(s)-i):
                    ans_set.add(s[j]+s[j+i])
                if len(ans_set) == len(s) - i:
                    cnt += 1
            if cnt == len(s) - 1:
                print(f"{s} is surprising.")
            else:
                print(f"{s} is NOT surprising.")
        else:
            print(f"{s} is surprising.")
profile
저는 정재혁임니다^___^

0개의 댓글