-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
문제 014 : 표 편집 #53
base: solutions
Are you sure you want to change the base?
문제 014 : 표 편집 #53
Conversation
👋 @tiaz0128 님 안녕하세요! 06장 스택
|
❌ @tiaz0128 님. 아쉽습니다. 테스트에 실패했습니다. 너무 어려우시면 같은 문제를 다른 사람들은 어떻게 풀고있는지 참고도 해보세요! |
❌ 아래의 코드는 테스트를 통과하지 못했습니다. # n = 표의 행 개수
# k = 처음 선택된 행의 위치
# cmd = 수행한 명령어 문자배열
def solution(n, k, cmd):
# 1. cmd 에서 명령어를 반복하면서 형태를 변경 배열?
# 2. 선택 위치를 잘 고려
# 3. 삭제 복구 = 스택사용해서 관리
# - 삭제시 C
# - 바로 아레 행
# - 삭제된 행이 가장 마지막 행인 경우 -> 바로 윗 행
# - 복구시 Z
# - 현재 선택된 행은 그대로
return |
✨ 아래의 코드는 테스트를 통과한 코드입니다. # n = 표의 행 개수
# k = 처음 선택된 행의 위치
# cmd = 수행한 명령어 문자배열
def solution(n, k, cmd):
dirs = {"U": -1, "D": 1}
stack = []
arr = ["O"] * n
for command in cmd:
print(f"k = {k} / command {command}")
if command == "C":
stack.append(k)
arr.pop(k)
if k == len(arr):
k -= 1
pass
elif command == "Z":
idx = stack.pop()
if idx <= k:
k += 1
arr.insert(idx, "O")
pass
else:
dir, cnt = command.split(" ")
k += dirs[dir] * int(cnt)
print("k=", k)
for idx in reversed(stack):
arr.insert(idx, "X")
return "".join(arr) |
이 문제는 책을 봐도 잘 이해가 안돼서 일단 그냥 넘어가고 날 잡아서 다시 공부해봐야겠다... UP / DOWN 이 왜 -1, 1 부터 시작하는건지 그런 내용을 모르겠다. |
소요시간
사용한 자료구조, 알고리즘
해당 자료구조, 알고리즘을 사용한 근거
어려웠던 구현 포인트
구현한 코드의 시간 복잡도
insert
,pop
를 이용한 구현for 문 안에서 =$O(N)$ 를 했기 떄문에 = $O(N^2)$
그래서 효율성 테스트는 통과 할 수 없다.
추가한 테스트 케이스와 그 이유
개선이 필요한 부분은?