본문 바로가기

Python42

[프로그래머스] 문자열 압축 문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/60057 📋 문제 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede.. 2022. 3. 14.
[프로그래머스] 무지의 먹방 라이브 문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/42891 📋 문제 평소 식욕이 왕성한 무지는 자신의 재능을 뽐내고 싶어 졌고 고민 끝에 카카오 TV 라이브로 방송을 하기로 마음먹었다. 그냥 먹방을 하면 다른 방송과 차별성이 없기 때문에 무지는 아래와 같이 독특한 방식을 생각해냈다. 회전판에 먹어야 할 N 개의 음식이 있다. 각 음식에는 1부터 N 까지 번호가 붙어있으며, 각 음식을 섭취하는데 일정 시간이 소요된다. 무지는 다음과 같은 방법으로 음식을 섭취한다. 무지는 1번 음식부터 먹기 시작하며, 회전판은 번호가 증가하는 순서대로 음식을 무지 앞으로 가져다 놓는다. 마지막 번호의 음식을 섭취한 후에는 회전판에 의해 다시 1번 음식이 무지 앞으로.. 2022. 3. 12.
[이코테] 볼링공 고르기 이것이 취업을 위한 코딩테스트다 with 파이썬 책을 읽고 정리한 내용입니다. 📋 문제 A, B 두 사람이 볼링을 치고 있다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 한다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀있고 공의 번호는 1번부터 순서대로 부여한다. 같은 무게의 공이 여러 개 있을 수 있지만 이 경우 서로 다른 공으로 간주한다. 볼링공의 무게는 1부터 M까지 자연수 형태로 존재한다. 예를 들어 N이 5이고 M이 3이며 각각의 무게가 차례대로 1, 3, 2, 3, 2 일 때 각 공의 번호가 차례대로 1번부터 5번까지 부여된다. 이때 두 사람이 고를 수 있는 볼링공 번호의 조합을 구하면 다음과 같다. (1번, 2번), (1번, 3번), (1번, 4번), (1번, 5번), (2번,.. 2022. 3. 11.
[이코테] 문자열 뒤집기 이것이 취업을 위한 코딩테스트다 with 파이썬 책을 읽고 정리한 내용입니다. 📋 문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌.. 2022. 3. 10.
[이코테] 만들 수 없는 금액 이것이 취업을 위한 코딩테스트다 with 파이썬 책을 읽고 정리한 내용입니다. 📋 문제 동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하시오. 예를 들어 N=5이고 각 동전이 3원, 2원, 1원, 1원 9원짜리 동전이라고 가정하자. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원이다. 또 다른 예시로 N=3이고 각 동전이 3원, 5원, 7원이라면 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 1원이다. 👉 입력 첫째 줄에는 동전의 개수를 나타내는 양의 정수 N이 주어진다. ( 1 2022. 3. 10.
[이코테] 곱하기 혹은 더하기 이것이 취업을 위한 코딩테스트다 with 파이썬 책을 읽고 정리한 내용입니다. 📋 문제 각 자리가 숫자(0-9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 단 +보다 x를 먼저 계산하는 일반적인 방식과는 달리 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다. 예를 들어 02984라는 문자열이 주어지면 만들 수 있는 가장 큰 수는 \(((((0+2)\times9)\times8)\times4) = 576\) 이다. 또한 만들 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어진다. 👉 입력 첫째 줄에 여러 개의 숫자로 구.. 2022. 3. 9.
[이코테] 모험가 길드 이것이 취업을 위한 코딩테스트다 with 파이썬 책을 읽고 정리한 내용입니다. 📋 문제 한 마을에 모험가가 N명 있습니다. 모험가 길드에서는 N명의 모험가를 대상으로 공포도를 측정했는데 공포도가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서 제대로 대처할 능력이 떨어집니다. 모험가 길드장인 동빈이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했습니다. 동빈이는 최대 몇 개의 모험가 그룹을 만들 수 있는지 궁금합니다. 예를 들어 5명의 모험가가 모였고 이들의 공포도는 2, 3, 1, 2, 2와 같다고 가정하자. 이때 그룹 1에 공포도가 1, 2, 3인 모험가를 한 명씩 넣고 그룹 2에 공포도가 2인 남은 두 명을 .. 2022. 3. 9.
[프로그래머스] 카펫 문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/42842 📋 문제 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 👉 입출력 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 .. 2022. 3. 5.
[프로그래머스] 더 맵게 문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/42626 📋 문제 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 .. 2022. 3. 4.