본문 바로가기

코딩테스트

[백준(Baekjoon) 1874번](Python) 스택 수열

 

<내코드>

<풀이과정>

숫자를 입력받을때, 원래 있던 오름차순의 1~N까지 숫자를 담은 배열에서 그 숫자 보다 작은 숫자는

push(+) 해주면서 cnt값을 증가시켜주고(리스트의 원소를 직접 옮겨도 되지만 시간초과가 난다.), 해당 

숫자까지 cnt가 올라가면 stack의 마지막원소와 같은지를 확인하고 같으면 꺼내즈고 pop(-) 해주는 작업을

계속해서 반복해주면 정답이 나오게 된다.

 

<느낀점>

처음에는 1~N까지 1씩 커지는 숫자를 담은 배열 이라는 조건을 무시하고 그냥 숫자 하나가 나올때 마다,

푸쉬,팝 연산을 직접 수행하였다. 그러니까 상당히 많은 시간이 소요되었다. 리스트 원소를 옮겨 주지 않고,

단순히 변수에 값을 하나씩 늘려가며 해당 숫자가 될 때까지 푸쉬 해주고 밑에 조건문을 둬서 해당 숫자가

스택에서 맨 마지막에 나오는 숫자와 같은지만 확인하면 풀리는 문제였다. 모든조건을 사용하는 습관을 길러야겠다.