본문 바로가기
코딩테스트/인프런

인프런 JAVA 알고리즘 정리(Stack, Queue(자료구조) 1번~8번)

by 고구마는호박고구마 2023. 4. 10.

1. 올바른 괄호  // 올바른 괄호인지 확인하는 스택의 기본적인 문제

- (())()()( 이런식으로 단순히 '(' 와 ')' 로만 이루어 있다.

- 그래서 Stack으로도 풀어보고 count 변수 선언 하여 풀어보았다.

 

2. 괄호문자제거 // 스택은 배열

- pop()을 하지 않고 for문으로 순서대로 꺼낼시 LIFO 형식이 아닌 INDEX 순 ( 먼저들어간 순으로 나옴-stack.get(i) )

 

3. 크레인 인형뽑기(카카오)

- 1. 뽑길 원하는 숫자(라인)이 넘어오면 2차원 행열의 열 기준 for문을 돌려 0이 아닐때 까지 돈다.

- 2. 0이 아닌 숫자를 만나면 stack에 넣는 작업을 하는데

- 2.1) 스택이 비어있거나 스택의 위의 숫자와 넣는 숫자가 다르면 그냥 넣는다.

- 2.2) 스택이 비어있지 않고 스택의 위의 숫자가 넣으려는 숫자와 같다? 애니팡 처럼 두 숫자가 터진다.

- 3. 이 과정을 반복한다.

- 4. 터진 숫자의 개수를 체크한다.

 

4. 후위식 연산 // 스택

- for 문을 돌며 연산자가 아닌 숫자면 stack에 push

- 연산자를 만나면 스택에서 2개의 숫자를 빼 연산 결과를 다시 스택에 넣는다.

- char 형 문자가 숫자인지 문자인지 확인 = Character.isDigit(char) 

- char 형 숫자를 int 형 숫자로 아스키코드로 접근 char-48 -> '7'-48 = 7 

 

 

5. 쇠막대기 // 스택 -  쇠막대기가 동강난 개수

() <- 레이저인지 막대인지 체크 

- 1. 레이저라면 문자열의 앞의 기호가 ' ( '

- 2. 막대라면 문자열의 앞의 기호가 ' ) ' 

- 3. 막대기 끝이라면 +1

 

 

6. 공주 구하기 // 큐

- 먼저 들어간 순서대로 제거가 되며, 계속 반복되는 고리형식임을 확인하여야 한다. -> queue 이용

 

 

7. 교육과정 설계 //큐

// 필수 과목이 A F C 라면 이 3과목은 무조건 들어야 하며 과목 진행은 무조건 A -> F -> C순으로 수강을 해야 된다. 중간에 어떤 과목을 들어도 상관없으며 순서만 맞으면 된다.// A C B F - NO// A X F Q A C - YES// 필수과목을 Queue로 설정 후 순서대로 접근하면서 수강신청 목록에 필수과목의 첫번째 값이 나오면 poll// 마지막까지 필수과목 Queue가 비어있지 않는다면 순서대로 하지 않았거나 필수과목을 다 듣지 않았다는 것

 

8. 응급실  // 큐

//큐의 값을 순서와 값을 가지는 키 값 형식으로 저장한다. - Person 클래스로 들어온 순위와 우선순위 변수를 만든다.

// 큐의 타입으로 Person 설정 

//가장 높은 우선순위가 poll 될 때 그 키 값이 M번째 환자와 같은지만 체크

 

 

댓글