본문 바로가기

Algorithm/코딩테스트 고득점 Kit

(20)
[고득점 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 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다. 사실 위 설명을 그대로 코드로 나타내..
[고득점 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이어야만 '('과..
[고득점 Kit / 스택&큐] 기능개발 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제의 해결과정은 다음과 같다. 1. progresses와 speeds 값을 참고하여 각각의 기능이 구현되는 기간을 담는 리스트 days를 구한다.이는 간단한 방정식과 올림을 사용하여 구현 가능하다.  (아래의 코드 참고) 2. 배포기준을 잡고, 배포그룹별 몇 개의 기능이 포함되어 있는지 확인한다. import mathdef solution(progresses, speeds): days = ..
[고득점 Kit / 스택&큐] 같은 숫자는 싫어 https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제는 스택에 대한 이해가 필요하다. 스택에 대해 잘 모르겠다면 필자의 다음의 글을 참고하자.https://vegetableworld.tistory.com/222 [Python] 스택스택은 가장 나중에 들어온 자료가 가장 먼저 빠져나가는 LIFO(Last-In-First-Out) 자료구조이다. 아래의 그림을 참고하면 이해하기 편하다.  그렇다면 파이썬에서는 스택을 어떻게 구현할까? 사실vegeta..