1. 내가 푼 풀이(틀림)
- 결론적으로 올바른 결과를 구하지 못했다.
- 리스트 전체를 입력받아서 이를 처리하는 게 까다로웠던 것 같고, 핵심 포인트를 잘못 잡았다. (밑에 핵심 포인트 2번을 놓친 듯하다)
더보기
# 내 풀이(틀림)
n = int(input())
print(n)
list1 = []
for i in range(n):
list1.append(int(input()))
list2 = []
num = 1
i = 0
while(i < n):
print('i : ', i)
print('num : ', num)
print('list1[i] : ', list1[i])
if num == list1[i]:
print('+')
print('-')
list2.append('+')
list2.append('-')
i = i+1
num = num-1
continue
elif num < list1[i]:
print('+')
list2.append('+')
num = num + 1
elif num > list1[i]:
print('-')
list2.append('-')
num = num-1
else:
print('No')
break
if i == n:
print(list2)
2. 해설
** 핵심 포인트 **
1. 스택에 원소를 삽입할 때 단순히 특정 수에 도달할 때까지 삽입하면 됨
2. 스택에서 원소를 연달아 빼낼 때 내림차순을 유지할 수 있는지 확인
- 입력을 하나씩 받아서 push나 pop연산을 쉽게 할 수 있는 것 같다.
- join()을 이용
- '구분자'.join(리스트)
: 리스트의 값과 값 사이에 '구분자'를 넣어 하나의 문자열로 합칠 수 있다.
출처: https://blockdmask.tistory.com/468 [개발자 지망생]
n = int(input())
count = 1
stack = []
result = []
for i in range(1,n+1):
data = int(input())
while count <= data:
stack.append(count)
count += 1
result.append('+')
if stack[-1] == data: # 스택의 최상위 원소가 데이터와 같을 때 출력
stack.pop()
result.append('-')
else:
print('No')
exit(0)
print('\n'.join(result))
3. 해설 수정
- 위의 코드를 제출하니 틀렸다는 결과가 나왔다.
- 구글링을 통해 대부분 사람들이 No 출력부분에서 어떤 임의의 변수(여기서는 temp)를 이용하는 것을 알았다.
- 그런데 왜 위의 코드는 안 되는지 모르겠다...
count = 1
stack = []
result = []
temp = True
n = int(input())
for i in range(1,n+1):
data = int(input())
while count <= data:
stack.append(count)
count += 1
result.append('+')
if stack[-1] == data: # 스택의 최상위 원소가 데이터와 같을 때 출력
stack.pop()
result.append('-')
else:
temp = False
break
if temp == False:
print("NO")
else:
print('\n'.join(result))
출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 올인원 패키지 Online
반응형
'Python' 카테고리의 다른 글
[알고리즘] 탐욕(그리디) 알고리즘 (0) | 2021.12.09 |
---|---|
[자료구조] 큐(Queue) 정리 (0) | 2021.12.09 |
[백준] 2798번 : 블랙잭 (0) | 2021.12.06 |
[백준] 2920번: 음계 (0) | 2021.12.06 |
[Tensorflow] 텐서플로우 버전 확인 + 설치 (0) | 2021.10.24 |
댓글