โ 25497 ๊ธฐ์ ์ฐ๊ณ๋ง์คํฐ ์์ค โ
import sys
input=sys.stdin.readline
N=int(input())
string=input().rstrip()
l,r,s,k,ans=0,0,0,0,0
for i in range(N):
if string[i] in '123456789':
ans+=1
else:
if string[i] == 'L':
l+=1
elif string[i] == 'R':
if l==0:
print(ans)
sys.exit()
else:
l-=1
ans+=1
elif string[i] == 'S':
s+=1
else: #'K'
if s==0:
print(ans)
sys.exit()
else:
s-=1
ans+=1
print(ans)
๐ฟ ์ซ์๋ ๊ทธ๋๋ก ์นด์ดํธ, ๋ค๋ง L ๋ค์์ R, S ๋ค์์ K๊ฐ ์ค๊ฒ ์์๋ฅผ ๋ง์ถ์ด์ผ ํ๋ค๋ ์ ๋ง ์ฃผ์. ์์๊ฐ ๊ผฌ์ด๋ฉด ๋ฐ๋ก ans ์ถ๋ ฅํ๊ณ ์ข ๋ฃ. L ๋ฑ์ฅํ ๋ ๋ง๋ค L ๊ฐ์ += 1 ํ๋ฉด์ R ๋์์ ๋ L -=1 ์๋ชจํ๊ณ ans += 1. ๋ฐ์ดํฐ๊ฐ ์ฐจ๋ก๋๋ก ์์๋๋ก ๋ค์ด์ค๊ณ ๋ค์ด์จ ์์๋ถํฐ ์ฐจ๋ก๋๋ก ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๋ฃ๊ตฌ์กฐ ๋์ ๋ฐฉ์๊ณผ ๋์ผ. ๋ฐฉ์๋ง ๋์ผํ ๋ฟ ์คํ ๋ง๋ค ํ์ ์์ด ๊ทธ ๋ ๊ทธ ๋ ์ฒ๋ฆฌํด์ค๋ ๊ฐ๋ฅ.
โ 7585 Brackets โ
import sys
input=sys.stdin.readline
#check ()[](
while 1:
s = input().rstrip()
if s == '#': break
stack=[]
is_legal=True
for x in s:
if x in '([{':
stack.append(x)
elif x == ')':
if stack:
if stack[-1] == '(': stack.pop()
else:
is_legal=False
break
else:
is_legal=False
break
elif x == ']':
if stack:
if stack[-1] == '[': stack.pop()
else:
is_legal=False
break
else:
is_legal=False
break
elif x == '}':
if stack:
if stack[-1] == '{': stack.pop()
else:
is_legal=False
break
else:
is_legal=False
break
print('Legal' if is_legal and not stack else 'Illegal')
๐ฟ () {} [] ์์ผ๋ก ์์๋๋ก ์ ๋์ด ์๋ ์ง ํ์ธ. stack ๋ง๋ค๊ณ ํด๋น opened parenteses๋ผ๋ฉด ๋ฐ๋ก append, closed parentheses๋ผ๋ฉด stack[-1]๊ณผ ๋น๊ต. ์์ด ๋ค๋ฅด๋ค๋ฉด ๋ฐ๋ก Illegal, ๊ฐ๋ค๋ฉด stack.pop() / stack์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด Illegal
๐ฟ flag ๋ณ์ ์ ์ ํ ํ์ฉ
โ 31395 ์ ๋ ฌ๋ ์ฐ์ํ ๋ถ๋ถ์์ด์ ๊ฐ์ โ
import sys
input=sys.stdin.readline
N=int(input())
ns=list(map(int,input().split()))
stack=[]
ans=0
for n in ns:
if not stack:
stack.append(n)
ans+=1
else:
if stack[-1]<n:
ans+=(len(stack)+1)
stack.append(n)
else:
stack.clear()
stack.append(n)
ans+=1
print(ans)
๐ฟ ์คํ ๊ด์ ์ผ๋ก ํ ์ ์๋ค. ์ผ๋จ list์ผ์ชฝ๋ถํฐ ๋๋ฉด์ ๋ฃ๊ณ ์ ํ๋ ์ซ์๋ฅผ x๋ผ ํ์. stack์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด ๋ฌด์กฐ๊ฑด xํ๋ ์นด์ดํธ ๋๋ฏ๋ก ans+=1 / ์ด๋ฏธ stack์ ์กด์ฌํ๋ค๋ฉด, (1) stack ๋งจ ๋์ ์์์ x ๋น๊ต: ์๋ฅผ ๋ค์ด x๊ฐ 5์ด๊ณ 1 2 3์ด stack์ ๋ค์ด์์ ๋ stack[-1]<x์ด๋ฉด x๋ฅผ ํฌํจํด์ ์ฆ๊ฐ์์ด์ ์ด x ์์ ํฌํจ 4๊ฐ ๋ง๋ค ์ ์๋ค([1 2 3 5] [2 3 5] [3 5] [5]). ์ฐ์ํ ๋ถ๋ถ ์์ด๋ง ๊ฐ๋ฅํ๋ฏ๋ก len(stack) + 1๋งํผ์ ์๋ก์ด ์์ด ๊ฐ์๊ฐ ์ถ๊ฐ. (2) stack[-1]>=x๋ผ๋ฉด x๋ฅผ ๋ ์์๋ก ์ฌ์ฉํด์ ์ฐ์ํ ๋ถ๋ถ์ฆ๊ฐ์์ด์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก, stack์ ๋ด์ฉ์ ๋ชจ๋ ์ ๊ฑฐํ๊ณ x ์์ ์ ๋ฃ๋๋ค. ans += 1
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Sliding Window Upper + Intermediate - 2 Solvedโ (0) | 2024.10.07 |
---|---|
โ Implementation&Simulation Intermediate II - 3 Solvedโ (0) | 2024.08.29 |
โ DP Intermediate II - 2 Solvedโ (0) | 2024.05.26 |
โ BFS&DFS Upper-Intermediate I - 16 Solvedโ (1) | 2024.05.12 |
โ Two-Pointers Upper-Intermediate I - 6 Solvedโ (1) | 2024.02.11 |
๋๊ธ