본문 바로가기

Algorithm

(109)
[고득점 Kit / 완전탐색] 모의고사 https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 전형적인 완전탐색 문제이다. 각 수포자의 패턴을 시험 문제 길이에 맞게 반복하고, 주어진 정답과 비교하여 맞힌 문제 수를 계산한 후, 가장 많이 맞힌 문제 수를 찾아내고, 그 점수를 가진 수포자들을 배열에 담아 반환하면 된다. def solution(answers): # 수포자들의 답안 패턴 supo_1 = [1, 2, 3, 4, 5] supo_2 = [2, 1, 2, 3, 2, 4,..
[고득점 Kit / 정렬] H-Index https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr H-Index가 무엇인지 잘 이해해야 한다. 문제를 읽어보면 논문  n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 H-index라고 명시되어 있다. 쉽게 말해, h번 이상 인용된 논문이 h편 이상일 때, h의 최댓값을 찾는 문제이다. 따라서, 코드를 작성해보면 아래와 같다. def solution(citations): # 1. 논문 인용 횟..
[고득점 Kit / 정렬] 가장 큰 수 https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제의 핵심은 리스트의 정렬과 문자열의 정렬의 차이를 이해하고, 문제의 조건에 맞게 어떻게 정렬하는가이다. 우선, 리스트의 정렬과 문자열의 정렬의 차이를 이해해보자. numbers = [3, 30, 34, 5, 9]numbers.sort(reverse=True)print(numbers) # [34, 30, 9, 5, 3] numbers = [3, 30, 34, 5, 9]numbers = list(..
[고득점 Kit / 정렬] K번째수 https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제는 i, j, k를 어떻게 파싱해낼 것인가?를 생각해내는게 핵심이라고 생각한다. i, j, k만 효율적으로 파싱한다면, 그 이후는 그냥 문제의 요구사항을 따라 코드를 적어나가면 된다. def solution(array, commands): result = [] for command in commands: i, j, k = command sliced_a..
[고득점 Kit / 스택&큐] 주식가격 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제는 2가지 방법으로 풀 수 있다.1. 스택을 이용한 방법2. 이중반복문을 이용한 방법 당연히 스택을 이용하여 푸는 것이 출제의도겠지만, 10,000이하의 자연수이기도 하고, 시험장에서 스택풀이가 생각나지 않으면 이중반복문이라도 써서 풀어야 한다. 1. 스택을 이용한 방법def solution(prices): n = len(prices) answer = [0] * n stack ..
[고득점 Kit / 스택&큐] 프로세스 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제를 보면 다음과 같이 설명이 나와있다.1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다.2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다.3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다. 사실 위 설명을 그대로 코드로 나타내..
[Python] 큐(Queue) 큐(Queue)는 데이터를 선입선출(FIFO: First In, First Out) 방식으로 처리하는 자료구조다. 즉, 큐에 먼저 들어간 데이터가 먼저 나오는 구조다. 아래의 그림을 참고하면 이해하기 편하다. 그렇다면 파이썬에서는 큐를 어떻게 구현할 수 있을까? 1. list 범용 자료구조가장 간단한 방법은 list를 사용하는 것이다.queue.pop(0)을 이용하면 첫 번째 데이터를 제거할 수 있다.# 큐 구현 (리스트 사용)queue = []# 데이터 삽입 (Enqueue)queue.append(1) # 큐에 1 추가queue.append(2) # 큐에 2 추가queue.append(3) # 큐에 3 추가print("큐 상태:", queue) # [1, 2, 3]# 데이터 삭제 (Dequeue)..
[고득점 Kit / 스택&큐] 올바른 괄호 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 필자는 이 문제를 다음과 같이 풀었다. 1. 반복문을 돌면서 원소값이 '(' 라면 cnt에 1을 더해주고, ')'라면 cnt에 1을 빼준다. 2. cnt가 음수가 나오는 순간 반복문을 멈추고 False를 리턴한다. 3. 음수가 아니라면 cnt가 계산되어 반복문을 빠져나온다. 이 때 cnt = 0이라면 True를, 그 외라면(cnt > 0) False를 반환한다. 왜냐하면 cnt = 0이어야만 '('과..