일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- SSR
- RTK Query
- 리터럴 타입
- 태그된 유니온
- 반공변성
- 결정 알고리즘
- app router
- CI/CD
- 호이스팅
- tailwind
- dfs
- 공변성
- 투포인터
- TS
- Promise
- async/await
- useAppDispatch
- 인터섹션
- CORS
- autosize
- ESlint
- 이분 검색
- 무한 스크롤
- webpack
- recoil
- Cypress
- 타입 좁히기
- Jest
- map
- React
Archives
- Today
- Total
짧은코딩
10799 쇠막대기 본문
반응형
https://www.acmicpc.net/problem/10799
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
내 풀이(맞음)
x = input()
x = x.replace('()', '1')
ary = []
sum = 0
for i in range(len(x)):
if x[i] == '1' and len(ary) == 0:
continue
elif x[i] == '1':
for j in range(len(ary)):
ary[j] += 1
elif x[i] == '(':
ary.append(0)
elif x[i] == ')':
sum += ary[-1]+1
ary.pop()
print(sum)
레이저를 1로 바꾼다. 그리고 sum에 자른 막대의 개수를 저장한다. 반복문에서 첫번째 조건으로 1이고 ary가 비어있으면 넘어간다. 두번째 조건은 1이면 막대기를 잘라서 1개씩 추가해준다. 세번째로는 '('이면 막대기 하나를 추가한다. 마지막으로는 ')'이면 ary의 마지막에 1을 더하고 sum에 더하고 삭제한다. 1을 더하는 이유는 막대기를 자른 횟수를 저장한거라서 잘린 막대기 개수에는 1을 더해줘야한다.
반응형
Comments