본문 바로가기
공부/백준

[백준] 10773

by _음주토끼_ 2022. 6. 15.

 

내가 하도 브론즈 1짜리와 실버 5짜리라고 덤볐다가 데인게 많아서 그런가... 이번엔 조금 쉽게 풀었다!

유형에 따라 다른 것 같기도 하다. 아무튼 이번 문제는 시간 초과와 런타임 에러 등의 문제 없이 한번에 솔했다.

문제의 내용은 장부를 기록하는 숫자를 적은 도중 잘못 적었으면 0을 입력하여 직전에 적은 숫자를 지운다.

당연하게도 선입후출(FILO)를 떠올리고 pop()을 구현했다.

반대 순서였다면 deque를 구현하여 popleft() 했을것.

1 이상 k는 100,000 이하의 정수(자연수)이기 때문에 money라는 배열에 방을 100001개 만들어줬다.

그리고 k값만큼 one이라는 변수에 값을 받아줬다.

바로 append하지 않은 이유는 append 할 경우 0까지 pop해야해서 번거롭고 귀찮기 때문.

append와 pop을 여러번 해야하기 때문에 시간도 더 오래 걸릴 것이다.

one과 0을 비교해서 같으면 pop을 실행, 아니면 money 배열에 append한다.

그럼 최종 money 안에는 잘못 기입하지 않은 숫자만 남는다.

그걸 전부 더해주면(sum(money)) 장부의 올바른 합을 구할 수 있다.

'공부 > 백준' 카테고리의 다른 글

[백준] 11050번  (0) 2022.06.15
[백준] 1152번  (0) 2022.06.15
[백준] 2012번  (0) 2022.06.15
[백준] 1252번  (0) 2022.06.15
[백준] 2417번  (0) 2022.06.15