프로그래머스 17

[프로그래머스] [PCCE 기출문제] 10번 / 데이터 분석

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/250121 AI 엔지니어인 현석이는 코드 번호(code), 제조일(date), 최대 수량(maximum), 현재 수량(remain)으로 구성된 데이터를 분석하고 있는데, 조건을 만족하는 데이터만 뽑아서 정렬하려고 한다. 데이터가 저장된 이차원 정수 리스트 datam, 데이터를 필터링할 기준을 의미하는 문자열 ext, 필터링할 기준값을 의미하는 정수 val_ext, 정보를 정렬하는 기준을 의미하는 문자열 sort_by가 주어질 때, data에서 ext 값이 val_ext보다 작은 데이터만 뽑은 후, sort_by 값을 기준으로 오름차순으로 정렬하여 반환한다. 접근 Pandas를 사용하라고..

Algorithm 2024.03.21

[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/250137 어떤 게임에 붕대감기라는 기술이 있다. 붕대감기 기술은 t초 동안 실행되는데 1초마다 x만큼의 체력을 회복한다. 또한 t초 연속으로 붕대를 감으면 y만큼의 체력을 추가로 회복한다. 캐릭터가 붕대감기 기술을 쓰는 도중 몬스터에게 공격당하면 기술이 취소되며 체력을 회복할 수 없다. 기술이 취소되거나 기술이 끝나면 캐릭터는 즉시 붕대감기 기술을 재사용하며 연속 성공 시간이 초기화된다. 게임 캐릭터는 최대 health만큼의 체력을 가질 수 있다. 몬스터의 공격을 받으면 피해량만큼 캐릭터의 체력이 줄어들며, 현재 체력이 0 이하가 되면 죽는다. 붕대감기 기술의 시전 시간, 초당 회복량..

Algorithm 2024.03.01

[프로그래머스] 롤케이크 자르기

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/132265 철수는 여러 토핑이 일렬로 올려진 롤케이크를 두 조각으로 잘라서 동생과 한 조각씩 나눠 먹으려고 한다. 두 사람은 조각의 크기보다 토핑의 종류를 더 중요하게 생각해, 각 조각에 올라간 토핑의 가짓수가 동일하면 공평하게 나눈 거라 생각한다. 예로 들어, 롤케이크에 4가지 종류의 토핑이 올라가 있고 그 토핑을 1, 2, 3, 4와 같은 번호로 표시했을 때 롤케이크의 토핑은 [1, 2, 1, 3, 1, 4, 1, 2]라고 표현할 수 있다. 이 롤케이크를 공평하게 나눈 경우는 [1, 2, 1, 3], [1, 4, 1, 2] 또는 [1, 2, 1, 3, 1], [4, 1, 2]가 될 ..

Algorithm 2024.01.24

[프로그래머스] [3차] 압축

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17684 어피치는 메신저에서 전송되는 메시지를 압축해 전송 효율을 높이는 업무를 맡았다. 메시지를 압축해도 전달하는 정보가 변경되서는 안 되기 때문에 압축 전 정보를 복원할 수 있는 여러 가지 무손실 압축 알고리즘 중, 성능이 좋고 구현하기 좋은 LZW(Lempel–Ziv–Welch) 압축을 구현하기로 했다. LZW 압축은 1983년에 발표된 알고리즘으로, 이미지 파일 포맷 GIF 등에서 사용된다. 압축 과정은 다음과 같다. 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다. 사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다. w에 해당하는 사전 색인 번호를 출력하고, 입력..

Algorithm 2023.12.21

[프로그래머스] 괄호 회전하기

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/76502 다음 규칙을 지키는 문자열을 올바른 괄호라고 정의한다. (), [], {}는 올바른 괄호다. A가 올바른 괄호면 (A), [A], {A}도 올바른 괄호다. []가 올바른 괄호 문자열이므로, ([])도 올바른 괄호다. A, B가 올바른 괄호면 AB도 올바른 괄호다. {}와 ([])가 올바른 괄호이므로, {}([]) 도 올바른 괄호다. 대괄호, 중괄호, 소괄호로 이루어진 문자열 s가 매개변수로 주어질 때, s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 반환하라. 풀이 매개변수 s의 길이가 1000 이하로 제..

Algorithm 2023.10.16

[프로그래머스] 멀리 뛰기 - 같은 것이 있는 순열

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12914 멀리 뛰기를 연습하는 효진이는 한 번에 1칸 또는 2칸을 뛸 수 있다. 예로 들어 칸이 4개라면 효진이는 (1칸, 1칸, 1칸, 1칸), (1칸, 2칸, 1칸), (1칸, 1칸, 2칸), (2칸, 1칸, 1칸), (2칸, 2칸)의 5가지 방법으로 맨 끝에 도달할 수 있다. 멀리뛰기에 사용될 칸의 수 N이 주어질 때 효진이가 끝에 도달하는 방법이 몇 가지인지 알아낸 후, 그 값을 1234567로 나눈 나머지를 반환하라. 같은 것이 있는 순열 이해하기 편하게 예시를 들어 설명한다. \(a, b, c, d, e\) 를 일렬로 나열하는 방법의 수는 \(5!\)이 된다. 그렇다면 \(a..

Algorithm 2023.10.12

[프로그래머스] 연속 부분 수열 합의 개수

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131701 수열을 갖고 놀기 좋아하는 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알고 싶어졌다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말한다. 예를 들어 수열 [7, 9, 1, 1, 4]로 원형 수열을 만들면 다음과 같다. 원형 수열은 처음과 끝이 연결되어있어 연속하는 부분 수열도 일반 수열보다 많다. 원형 수열의 원소 elements가 주어질 때, 원형 수열의 연속 부분 수열의 합으로 만들 수 있는 수의 개수를 반환하라. 풀이 1 프로그래밍적으로 원형 수열을 다룰 때는 인덱스를 리스트 길이로..

Algorithm 2023.10.11

[프로그래머스] 예상 대진표

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12985 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행하는 게임대회가 개최되었다. 참가자는 각각 1부터 N번을 배정받고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행한다. 각 게임에서 이긴 사람은 다음 라운드에 진출하는데, 다음 라운드에 진출할 참가자는 1번부터 N/2번을 다시 차례대로 배정받습니다. 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받는다. 게임은 최종 한 명이 남을 때까지 진행된다. 이때, 처음 라운드에서 A번을 가진 참가자..

Algorithm 2023.09.21

[프로그래머스] 구명보트

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42885 구명보트를 이용해 무인도에 갇힌 사람들을 구출하려고 한다. 구명보트는 최대 2명까지 탈 수 있고, 무게 제한도 있다. 예로 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이면 2/4번째 사람은 같이 탈 수 있지만 1/3번째 사람은 같이 탈 수 없다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 반환하는 함수를 작성한다. 구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출..

Algorithm 2023.09.18

[프로그래머스] 다음 큰 숫자

문제 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12911 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의한다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 개수가 같다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수이다. 예를 들어 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 반환하는 함수를 작성하라. 접근 자연수 n을 이진수로 변환한 뒤, 덧셈 연산에 의해 자리값이 01에서 10으로 바뀌는 지점을 찾는다. 남은 오른쪽 자리값은..

Algorithm 2023.09.11
1 2