
import sys
import builtins

# 출력 즉시 표시를 위한 설정
sys.stdout.reconfigure(line_buffering=True)
sys.stderr.reconfigure(line_buffering=True)

# 원본 input 함수 백업
original_input = builtins.input

def interactive_input(prompt=''):
    """프롬프트 중복 해결된 대화형 input 함수"""
    
    # 🔥 수정: 프롬프트 처리 방식 변경
    if prompt:
        # 사용자가 보는 프롬프트는 한 번만 출력
        print(prompt, end='', flush=True)
        # 서버 신호용 프롬프트는 별도 전송
        print(f"\nPROMPT:{prompt}", flush=True)
    
    # 입력 대기 신호 출력
    print("WAIT_FOR_INPUT", flush=True)
    
    # 실제 입력 대기
    try:
        user_input = sys.stdin.readline()
        if user_input:
            return user_input.strip()
        return ""
    except (KeyboardInterrupt, EOFError):
        return ""
    except Exception as e:
        print(f"입력 오류: {e}", file=sys.stderr, flush=True)
        return ""

# input 함수 교체
builtins.input = interactive_input

# 🔥 사용자 코드 실행
try:
    str = input("문자열을 입력하세요 ")
    print('"str"')
    
    
except KeyboardInterrupt:
    print("\n프로그램이 중단되었습니다.", flush=True)
except Exception as e:
    import traceback
    print(f"실행 오류: {e}", file=sys.stderr, flush=True)
    traceback.print_exc()
finally:
    # input 함수 복원
    builtins.input = original_input
    print("EXECUTION_FINISHED", flush=True)
