리우's IT Story
article thumbnail
728x90
반응형

https://school.programmers.co.kr/learn/challenges?order=recent&partIds=17931

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

 

 

스택을 활용해보자


 

 

 

n을 board의 길이로 지정

내장함수 stack을 integer형으로 선언 (바구니를 나타내기 위한 자료구조 )

 

반복문을 이용해  배열  moves의 해당열을  선회하면서  move변수에 담아준다.

 

 

만약 스택이 비어있지않으면서  격자에 있는 요소를  발견하고 바구니에 있던 요소와  새로들어온 요소가 같으면 

stack.pop으로 맨위에 있는 요소를  제거하고 answer로 요소의 개수를 더해준다. 

 

만약 board 에  요소가 비어있으면  새로운 요소를  바구니에 담고  board의 i과 col을 0으로 설정한다. 

요소를  하나 옮겼으므로 break 로  빠져나온다.

 

 

메인함수에서 board의 값과 moves의 값을 지정해준다.

함수를 호출해주고

answer가 4와 같다면 정답 : 오답 을  검증해주고 출력해준다. 

 

 

 

 

스택을 쓰지않은 코드

 

 

새로운 배열 basket을  선언해서 moves.length로 길이만큼 선언해준다.

index가 크레인 / j가 가로축

 

moves의 길이만큼 루프시킨다. 

index는 길이에서 -1 (인덱스는 0부터 4까지라서 )

만약 담긴 인형 (j, index) 가 0이 아니면  get에  꺼낸 인형의 인덱스 위치를  담고

인형을 담았으니 j와 index를 0으로 초기화시킨다.   인형을 이미 하나 꺼냈으니 반복하지않는다 break.

 

 

바구니의 길이만큼 루프시키고 

만약 바구니에 담긴 j 가 0이라면 break로 빠져나온다. 

 

 

바구니의 길이만큼루프하면서 

만약 바구니에 담긴 j가 0이 아니면서 바구니에 담긴 j와  j+1이 같다면 (연속으로 담긴다면)

바구니는 0, 연속으로 담긴 값도 0으로 초기화 시켜주고

  초기화된 j의 요소가 2개니까 answer에 2를 더해준다. 

 

728x90
반응형
profile

리우's IT Story

@LRWoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!