프로그래머스 19

[프로그래머스] 게임 맵 최단거리

문제문제 : https://school.programmers.co.kr/learn/courses/30/lessons/1844ROR 게임은 두 팀으로 나눠서 진행하는데, 상대 팀의 진영을 먼저 파괴하면 이긴다. 즉, 각 팀은 상대 팀 진영에 빠르게 도착해야 한다. 아래 그림은 당신의 팀 캐릭터(행 :1, 열 : 1), 상대 팀의 진영(행: 5, 열: 5) 그리고 게임의 맵(5 X 5)을 표현한 것이다.맵에서 검은 부분은 벽으로 막혀 갈 수 없는 길이고, 흰 부분이 갈 수 있는 길이다. 캐릭터는 동서남북으로 한 칸씩 이동하되 맵을 벗어날 수는 없다. 만약 상대 팀 진영이 벽으로 막혀있다면 상대 팀 진영에 도착할 수 없다.게임의 맵을 이차원 배열 maps 매개변수로 전달받을 때, 캐릭터가 상대 팀 진영에 도착..

Algorithm 2024.05.30

[프로그래머스] 가장 많이 받은 선물

문제문제 : https://school.programmers.co.kr/learn/courses/30/lessons/258712친구들끼리 카카오톡 선물하기 기능을 사용해 선물을 주고받은 이번 달까지의 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하고 싶다.두 사람이 선물을 주고받은 기록이 있으면, 두 사람 사이에 더 많은 선물을 준 사람이 다음 달에 선물 하나를 받는다.두 사람이 선물을 주고받은 기록이 없거나 그 수가 같으면, 선물 지수가 큰 사람이 작은 사람에게 선물 하나를 받는다.선물 지수는 이번 달까지 자신이 친구들에게 준 선물의 수에서 받은 선물의 수를 뺀 값이다.두 사람의 선물 지수가 같으면 다음 달에 선물을 주고받지 않는다.위의 규칙대로 선물을 주고받을 때, 다음 달에 선물을 가장 ..

Algorithm 2024.05.23

[프로그래머스] [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
1 2