본문 바로가기

코딩테스트/SWEA

[Python, 파이썬] SWEA 14555. 공과 잡초

원에 놓았을 수 있는 공의 개수의 최솟값을 구하는 문제.

 

 

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

for test_case in range(1, T+1):

    field = input() # 초원
    answer = 0

    N = len(field) # 초원의 길이
    i = 0

    while(i < N): # 초원일때

        if(field[i] == "(" and field[i+1]==")"): # 공 1개
            answer += 1
            i += 2 # 다음 번 반복으로 건너뜀
            continue

        elif(field[i] in ["(", ")"]): # 풀로 가려진 공 1개
            answer += 1

        i += 1 # 반복변수 ++
        
    print("#%d %s" %(test_case, answer))
 

 

[문제풀이]


|..(|.||)||||.().
 

이렇게 초원에 풀이 쏟아진 형태가 있다.

() : 공 1개

(| : 풀로 가려진 공 왼쪽
|) : 풀로 가려진 공 오른쪽
 

그럼 이렇게, 아무것도 가려지지 않은 공.

그리고 풀로 가려진 공으로 판단해서 각기 세주면 된다.

 

처음 완전한 공일 경우엔 1개를 세주고,elif로 반쪽만 발견하면 1개씩 세주는 걸로 마무리!