-
스택과 문제들 풀면서 얻은..자료구조와 알고리즘/알고리즘 2023. 4. 5. 14:07
스택과 관련 문제들을 풀어보았다.
문제를 풀면서 얻은 점들 한눈에 볼 수 있도록 정리하려고 작성했다.
스택은 LIFO구조. 저장된 데이터의 마지막 값이 의미있는 경우에 사용하면 편하다!
-얻은점
>테스트케이스 주어질때는 바로 입출력하는 방식이 좋다.
--단어 뒤집기 1,2 ★---
>문자열 다룰 때 자바 eof (입력,파일 스트림으로부터 모두 읽기)
while((input=readLine()) !=null)
while((input=read()) !=-1)
while(scanner.hasNext())
> 문자열을 중심으로 입력을 받고 char[]로 변환해서 사용하는 것이 훨씬 편한듯하다.
read() --쪼끔구리다
readLine() 개행무시 - char[] 다룰때 필요하다면 미리 추가해두자.
> 스택에 있는 값 모두 빼기
while (!Sstack.empty()) { bw.write((char) Sstack.pop());
----------------------------
--★괄호문제--
> 중첩 반복문 구조에서 내부 반복문을 break하면서, 외부 반복문을 continue해야하는 너낌을 줘야할 때
따로 메서드로 빼서 값을 return해주는 방법을 생각해보자..
-----------------
--★스택수열---
> 원하는 내용을 출력하고 바로 return갈기는 것도 좋다. (main 강제종료)
> 바로 종료할 코드만 else if문으로 묶고, 특별한 상황이 아니면 반복할 코드는 따로 빼두는 것이 훨 간결
(무엇을 if로 묶느냐에 따라 코드 간결성이 달라질 수 있다.)
> 반복문 쓸 때 너무 생각없이 쓰는 경우가 왕왕 있다 조심하자
i<n (반복문 안에서 i~n-1까지 n포함x i == n이되며 끝)
i<= n(반복문 안에서 i~n까지 포함 i==n+1이되며 끝)
-------------------
---에디터 문제---
>저장된 값 중에 마지막 값이 의미있는 겨우 에는 확실히 스택을 쓰는게 좋다
> "메뉴 value" 메뉴일 때 value를 어떻게 해라~ 등 두가지를 한 줄에 입력 받을 때
split(" ")도 괜찮지만,,
input.charAt(input.indexOf(' ')+1)라던지 혹은 substring + indexOf 사용하는 방법도 좋다.
> 스택 뒤집고 뒤집기 1 pop - 2 push - 2 pop 1을 2에 pop하고 2를 pop하면, 원래대로.. 반대의 반대랄까
---------------------
---큐구현----------
>큐는 FIFO구조이다. 스택과 반대로 순서를 의미할 때 사용한다. <-pop 1,2,3 <-push
>[begin, end)를 이용해서 큐를 배열로 구현할 수 있다.
>하나의 큐 연산의 시간복잡도는 1이다.
----------------------
-----요세푸스 수열---
> 일정한 규칙을 가지고 배열을 순회시키기 (배열길이 n, 규칙 k, i는 증가연산)
k = (k*i) % n
->k가 배열길이보다 작으면, 배열 안에서 순환 -> k에서 배열 길이만큼 나눈(차감) 나머지 만큼 순환
-> 단 나누어 떨어져서 0이되는 경우 k는 맨처음이 아니라 , 배열의 마지막인 것으로 조정할 필요있음
-----------------------------
'자료구조와 알고리즘 > 알고리즘' 카테고리의 다른 글
자알인 - 스택 & 큐 (0) 2024.01.30 자알인 (1) 코딩테스트 팁 (0) 2024.01.03 다이나믹 프로그래밍 (0) 2023.04.13 여러가지 수학 (0) 2023.04.11 프코전-자바편 1~2장 (0) 2023.03.30