728x90

 

- 스택/큐

레벨 1. 같은 숫자는 싫어 

https://school.programmers.co.kr/learn/courses/30/lessons/12906?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(arr):
    answer = []
    answer.append(arr[0]) 
    for i in range(1,len(arr)): #123456
        #만약 answer가 있고, answer의 마지막요소가 arr의 뒷수랑 같다면
        if answer and answer[-1] == arr[i]:
            answer.pop() #없애버리기
        answer.append(arr[i])  #그럼 다시 넣기
    return answer
- 내가 기억해야되는 점
1. stack의 형태로 풀었다.
2. 배열[-1]은 마지막요소를 뜻한다.

 

레벨 2. 기능개발

https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

from collections import deque
def solution(progresses, speeds): #큐
    answer = []
    days = deque()  # 각 기능이 완료되기까지 걸리는 날 수를 저장하는 리스트
    
    # 각 기능의 완료일 계산
    for i in range(len(progresses)):#그래
        remaining_work = 100 - progresses[i] #남은잔여작업(100-작업중)
        day = (remaining_work + speeds[i] - 1) // speeds[i] 
        #*올림 계산하는법 (A+B-1)//B
        days.append(day)
        
    # 배포 시점에 따라 기능 배포 수 계산
    while days:
        # 첫 번째 기능이 완료되는 날
        deploy_day = days.popleft()
        count = 1
        
        # 그 다음 기능들이 함께 배포될 수 있는지 체크
        # 현재 대기중인 다음작업(day[0])이 현재배포일에 포함되냐(그래서작은거봄)
        
        while days and days[0] <= deploy_day:
            days.popleft()
            count += 1
        
        answer.append(count)
    return answer
- 내가 기억해야하는 점
1. 이 문제는 큐로 풀어야한다. 보통 어떤 경우에 스택이나 큐로 풀어야할까?
* 스택 :
: 최근의 작업이나 상태를 저장하고 복구해야하는 재귀적 구조 문제 해결, 깊이 우선탐색(DFS)의 경우
: 역순으로 데이터를 처리해야할때(문자열 역순 처리, 이진 트리의 후위순회)
: 중첩된 구조를 관리할때 (함수 호출, 괄호의 짝을 처리할때)
* 큐:
: 은행대기열(순서대로처리), 프로세스 스케쥴링, BFS(너비우선탐색)의 경우
2. 보통 올림계산하는 식
: 'A+B-1//B'라는 식을 이용하곤 한다.

 

레벨 2. 올바른 괄호

https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(s):
    answer = True
    sTextArray = []
    for i in s:
        if i == '(':
            sTextArray.append(i)
        else:
            if not sTextArray: 
                answer = False
                break
            sTextArray.pop()
    
    if sTextArray:
        answer = False

    return answer
- 이런 괄호문제는 자주나오는거 같으니 익숙해지자!
- 참고로 이번문제도 스택으로 풀었다!

 

레벨 2. 프로세스

https://school.programmers.co.kr/learn/courses/30/lessons/42587

프로세스 코드
- 냥냥
- 멍멍
- 왈왈
728x90

+ Recent posts