코드 공부
백준-알고리즘 기초 (1/2)-자료구조 1
유스베리이
2025. 6. 23. 18:26
다 풀었던 문제지만 복습차원 ..
⌨️ 10828번
import sys
N = int(sys.stdin.readline)
cmd_list = []
stack = []
for i in range(N):
mylist = input().split()
if mylist[0] == 'top':
if len(stack) != 0:
print(stack[-1])
else:
print(-1)
elif mylist[0] == 'push':
stack.append(mylist[1])
elif mylist[0] == 'size':
print(len(stack))
elif mylist[0] == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif mylist[0] == 'pop':
if len(stack) == 0:
print(-1)
else:print(stack.pop())
👑 느낀점
- 불필요한 함수 사용은 금지.
- input() 보다 sys.stdin.readline() 사용해야 시간초과가 안남.
- 파이썬은 따로 stack 구조를 제공하지 않아 list 구조를 사용해야 함.
⌨️ 9093번
import sys
N = int(sys.stdin.readline())
stn = []
word =[]
for i in range(N):
stn = input().split(' ')
for j in stn:
word.append(j[::-1])
answer = " ".join(word)
print(answer)
👑 느낀점
- list의 각 value를 거꾸로 출력하기 위해서는 [::-1] 사용
- " ".join(word) 를 사용해 단어 이어서 출력
⌨️ 9012번
🤨 처음 짠 코드
import sys
def solution(mylist):
stack =[]
for word in mylist:
if word == "(" :
stack.append(word)
elif word == ")":
if stack and stack[-1] == "(":
stack.pop()
else:
print("NO")
return
if not stack: print("YES")
else: print("NO")
N = int(sys.stdin.readline())
for i in range(N):
line = input().split()
solution(line)
→ 결과값이 다 YES 만 나왔다. 이유를 알아보니 input.split()으로 문장을 받으면 '((()())))'이 하나의 값으로 list에 저장되어 결과가 이상하게 나왔다.
😛 수정된 코드
import sys
def solution(mylist):
stack =[]
for word in mylist:
if word == "(" :
stack.append(word)
elif word == ")":
if stack and stack[-1] == "(":
stack.pop()
else:
print("NO")
return
if not stack: print("YES")
else: print("NO")
N = int(sys.stdin.readline())
for i in range(N):
line = input().strip()
solution(line)
👑 느낀점
strip() vs split()
strip()
- 입력 문자열의 앞뒤 공백 문자(스페이스, 탭, 개행 등)를 제거
- 입력: ' hello world \n' → 결과: 'hello world'
split()
- 입력 문자열을 공백 기준으로 잘라서 리스트로 반환
- 입력: 'hello world 123' → 결과: ['hello', 'world', '123']