알고리즘

9324-백준-진짜 메세지

easysheep 2023. 3. 10. 00:20

1. 문제 출처

https://www.acmicpc.net/problem/9324

 

9324번: 진짜 메시지

스파이들은 사령부와 통신하기 위해서 SMTP(비밀 메시지 전송 프로토콜)를 사용해 비밀 회선으로 전자 메시지를 보낸다. 메시지가 적들에 의해 조작되어 보내진 것이 아닌 진짜 메시지라는 것

www.acmicpc.net

2. 풀이

단순 구현 문제이다.

# 테스트 케이스 받기
num  = int(input())

# 각 메세지 판단 함수
def solution(msg):
    # 메세지 문자 딕셔너리
    msg_char_list = {}
    # 3번 째 나온 단어
    is_third = 0
    # 성공 여부
    flag = True
    
    for char in msg:
        # 만약 is_third 가 0이 아니면
        if is_third:
            # is_third 다음이 is_third와 같을 때
            if char == is_third:
                is_third = 0
                msg_char_list[char] = 0
                continue
            # 아니면 FAKE
            else:
                print("FAKE")
                return
        # 딕셔너리에 문자가 없을 때
        if char not in msg_char_list.keys():
            msg_char_list.update({char:1})
        # 있으면서 3번째 일때
        elif msg_char_list[char]==2:
            msg_char_list[char] = 0
            is_third = char
        else:
            msg_char_list[char]+=1
    # 만약 3번 반복된 후에 한번더 반복했거나 모두 정상일때      
    if flag and is_third == 0:
        print("OK")
    # 만약 3번 반복후에 바로 문자열이 끝날 때
    else: 
        print("FAKE")
            
msg_list = []
for _ in range(num):
    msg_list.append(input())
for msg in msg_list:
    solution(msg)