[Python/백준] #10799 - [쇠막대기] [try_again]

2021. 11. 30. 22:59·코딩테스트/백준[Python]

[쇠막대기]-10799번

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

My answer

# 첫번째 제출(시간초과)
cnt,sums=0,0
tmp=input()
while("()" in tmp):
    tmp=tmp.replace("()","L")

while('(' in tmp and ')' in tmp):
    for i in range(len(tmp)):
        if(tmp[i]=='('):
            for j in range(i+1,len(tmp)):
                if(tmp[j]=='('):
                    break
                elif(tmp[j]==')'):
                    sums+=tmp[i:j+1].count('L')+1
                    tmp=tmp[:i]+'D'+tmp[i+1:]
                    tmp=tmp[:j]+'D'+tmp[j+1:]
                    break
print(tmp)
print(sums)
# 두번째 제출(시간초과)
sums=0
tmp=input()
for i in range(len(tmp)):
    if(tmp[i]==')'):
        for j in range(i-1,-1,-1):
            if(tmp[j]=='('):
                if(j==i-1):
                    tmp=tmp[:j]+'LL'+tmp[i+1:] 
                    break
                sums+=tmp[j:i+1].count('LL')+1   
                tmp=tmp[:j]+'D'+tmp[j+1:] 
                break
print(sums)

 

Another answer

arr = list(input())
bar = 0 #현재 짝대기 개수
cnt = 0 # 정답 
i = 0
while 1:
    if i==len(arr)-1: break
    if arr[i]=='(':
        if arr[i+1]==')':
            cnt+=bar
            i+=2
            continue
        bar+=1
        cnt+=1
    else:
        bar-=1
    i+=1
print(cnt)
더보기

내 코드는 답은 계속 맞았는데 시간초과가 떴다.  나는 문제 그대로를 풀려고 막대기도 문제 그대로 하고 그렇게 풀었는데 그러면 안되는 것 같다. 아래 코드를 보니 어떤 막대긴지 신경안쓰고 그냥 푼 것 같다. 글로 쓰려니 설명을 잘 못하겠다. + 엄청 시간을 헤맸는데, 파이썬은 for문에서 인자를 건들여도 다시 돌아가면 원래 인자로 초기화 된다고 한다;;; 이런 엄청난 걸 몰랐다니 C에서는 안그런데 파이썬만 그렇다고 한다. 이게 무슨 말이냐면 예를 들어 파이썬의 for문의 인자로 리스트의길이를 넣었을때. 반복문 내에서 길이를 바꿔줘도 for문은 맨처음 들어간 리스트의 길이대로 돌아간다는 것이다. 그래서 나는 저기 맨 마지막 코드의 while문을 for문으로 바꾼뒤 i를 인자로 넣어주고 밑에서 i+=2를 i+=1로 바꿔주고, i+=1은 없앴는데 계속 이상하게 나와서 보니 i는 맨처음 그냥 그대로 0~변화없이 증가한다.. 이건 몰랐으면 영원히 몰랐을거다. c에 익숙해진 난,,

728x90

'코딩테스트 > 백준[Python]' 카테고리의 다른 글

[Python/백준] #10808 - [알파벳 개수]  (0) 2021.12.01
[Python/백준] #10866- [덱]  (0) 2021.12.01
[Python/백준] #10845- [큐]  (0) 2021.11.30
[Python/백준] #9012- [괄호]  (0) 2021.11.30
[Python/백준] #18870 - [좌표 압축] [try_again]  (0) 2021.11.30
'코딩테스트/백준[Python]' 카테고리의 다른 글
  • [Python/백준] #10808 - [알파벳 개수]
  • [Python/백준] #10866- [덱]
  • [Python/백준] #10845- [큐]
  • [Python/백준] #9012- [괄호]
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (472)
      • 알쓸신잡 (80)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Blog

    • 🏠 Home

    ✏️글쓰기
    💻 관리

    Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    dp
    그리디
    이분탐색
    백준
    DFS
    이것이취업을위한코딩테스트다
    파이썬
    이코테
    나동빈
    BFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상단으로

티스토리툴바