SW Expert Academy-14555-Python

cosmos·2023년 5월 11일
0
post-thumbnail

코드

def solve(data: str) -> int:
    result = 0
    
    for x in range(len(data)-1):
        if data[x:x+2] == '(|' or data[x:x+2] == '|)' or data[x:x+2] == '()':
            result += 1
    
    return result

T = int(input())

for test_case in range(1, T + 1):
    s = str(input())
    print(f'#{test_case} {solve(s)}')

결과

ChatGPT Code

def count_balls(s):
    open_count = 0
    balls_needed = 0

    for char in s:
        if char == '(':
            open_count += 1
        elif char == ')':
            if open_count == 0:
                balls_needed += 1
            else:
                open_count -= 1

    balls_needed += open_count
    return balls_needed

# 테스트 케이스 수 입력
T = int(input())

for _ in range(T):
    # 문자열 입력
    S = input()
    result = count_balls(S)
    print(result)

ChatGPT 문제풀이

위의 코드에서 count_balls 함수는 문자열 s에서 잡초를 제거하여 초원에 놓을 수 있는 공의 최소 개수를 계산하는 함수입니다. 이 함수는 문자열을 한 글자씩 확인하면서 열린 괄호 (가 나오면 open_count 변수를 증가시키고, 닫힌 괄호 )가 나오면 open_count 변수를 감소시킵니다. 만약 닫힌 괄호를 만났는데 open_count가 0이라면 해당 공은 다른 공과 겹치지 않으므로 공의 개수를 추가로 늘립니다. 이렇게 잡초를 제거한 후에도 남아있는 open_count는 겹치지 않는 열린 괄호의 개수를 의미하므로 이를 공의 개수에 더해줍니다. 최종적으로 구해진 공의 개수가 최소 개수가 됩니다.

ChatGPT 문제풀이와의 비교

ChatGPT Code: 위 코드의 전체 시간 복잡도는 O(N), 여기서 N은 문자열의 길이입니다.
코드에서 문자열을 한 글자씩 확인하면서 반복문을 실행하므로 문자열의 길이에 비례하는 시간이 소요됩니다. 따라서 코드의 전체 시간 복잡도는 O(N)입니다.
주요한 작업은 문자열을 한 글자씩 확인하면서 괄호를 처리하는 부분이며, 이 작업은 입력 문자열의 길이에 선형으로 비례합니다. 따라서 코드의 시간 복잡도는 입력 문자열의 길이인 O(N)입니다.

내 코드: O(N)

문제 효율성 같다.

문제출처 & 깃허브

sw expert academy
github

0개의 댓글