본문 바로가기

전체 글

(408)
23.04.26 파이썬 코딩 퀴즈#235 카운트 다운 (프로그래머스 스쿨) 이번 문제는 카운트 다운 문제이다. 다트 게임을 진행하는 문제이며, 무작위로 정해진 목표 점수를 다트를 던지면서 점수를 깎아서 정확히 0으로 만드는 게임이다. 다트판에는 1~20까지 점수가 있고, 싱글(1배),더블(2배), 트리플(3배) 의 점수를 획득할 수 있는 공간과 50점을 한번에 획득 가능한 정 가운데 불 이 존재한다. 최소한의 다트를 던져서 목표 점수를 만드는게 목적이며, 만약 그러한 방법이 여러가지가 있다면 '싱글' 또는 '불'을 최대한 많이 던지는 방법을 선택해야 한다. 입출력 예 2번을 살펴보자. 58점을 맞추는 방법은 여러가지 이다. 먼저 문제의 정답인 불(50) + 8 싱글이 가능하고. 그 다음은 20 더블 + 18 싱글, 19더블 + 20 싱글, 18더블 + 11더블 .... 등의 다..
23.04.24 파이썬 코딩 퀴즈#234 등산코스 정하기 (프로그래머스 스쿨) 이번 문제는 등산코스 정하기 문제이다. 그동안 밀렸던 level 0 문제들을 일부 풀고, 다시 level 3으로 넘어왔다. 먼저 문제 설명을 읽어보자 XX산은 n 개의 지점으로 이루어져 있으며, 각 지점은 1부터 n 까지 번호가 붙여져 있다. 이 때 각 지점은 양방향 통행이 가능한 등산로로 연결되어 있으며, 등산로별로는 이동하는데 일정 시간이 소요된다. 등산코드는 방문할 지점 번호들을 순서대로 나열하여 표현 가능하며, 1-2-3-2-1 은 1번 지점에서 출발하여 2번,3번,2번,1번 지점을 순서대로 방문한다는 의미이다. 이때, 휴식없이 이동 해야 하는 시간 중 가장 긴 시간을 해당 등산코스의 intensity 라고 부르기로 하며, 당신은 이 intensity 가 최소가 되도록 하는 등산코스를 정해야 한다..
23.04.21 파이썬 코딩 퀴즈#233 정수를 나선형으로 배치하기 (프로그래머스 스쿨) 이번 문제는 정수를 나선형으로 배치하기 문제이다. level 0 에 추가된 문제인데, 생각보다 까다로운 문제라서 따로 포스팅 하려고 한다. 먼저 다른 문제인 삼각 달팽이 문제랑 비슷항 유형의 문제이다. https://yorysis.tistory.com/268 23.02.01 파이썬 코딩 퀴즈#127 삼각 달팽이(프로그래머스 스쿨) 이번 문제는 삼각 달팽이 문제이다. 딱히 문제 설명이 없다. 밑변과 높이가 n인 삼각형에서 맨 위쪽부터 1을 시작으로 채워나가는데, 진행방향은 그림과 같이 시계반대방향으로 삼각형을 그리며 yorysis.tistory.com 한가지 다른점은 삼각 달팽이 문제이 경우 방향이 한번 꺾일때마다, 탐색하는 길이 역시 한칸씩 줄어든다는 점이고, 위 문제는 그렇지 않다는 점이다. 코드는 l..
23.04.21 파이썬 코딩 퀴즈#232 요격 시스템 (프로그래머스 스쿨) 이번 문제는 요격 시스템 문제이다. 문제의 핵심은 미사일을 최소로 사용하여 모든 폭격 미사일을 요격하는 것이다. A 나라가 발사한 폭격 미사일은 x축에 평행산 직선 형태의 모양이며 개구간을 나타내는 정수 쌍 (s,e) 형태로 표현된다. B 나라는 특정 x좌표에 y축에 수평이 되도록 미사일을 발사하며, 발사된 미사일은 해당 x 좌표에 걸쳐있는 모든 폭격 미사일을 관통하여 한번에 요걱 가능하다. 하지만 개구간(s, e)로 표현되는 미사일은 s와 e에서 발사하는 요격 미사일로 요격할 수 없습니다. 설명만 놓고 봐서는 무슨 말인지 감이 잡히지 않는다. 위 그림설명을 보니, 다시 글 설명이 이해가 된다. 먼저 targets 을 그림으로 나타내면 위와 같아지는데, 이때 개구간 안에서만 요격 가능하다. 개구간이랑 해..
23.04.20 파이썬 코딩 퀴즈#231 두 원 사이의 정수 쌍 (프로그래머스 스쿨) 이번 문제는 두 원 사이의 정수 쌍 문제이다. 2차원 좌표위에 반지금 r1, r2를 가지는 두개의 원이 존재하며, 두 원 사이의 공간안에 좌표(x,y)가 정수인 점의 개수를 구하는 문제이며, 각 원 위의 점도 포함되어야 한다. 특별한 제한 사항은 없다. 입출력 예 1 을 그림으로 나타낸 모습이다. 정수 좌표쌍의 형태를 보면 알겠지만, 먼저 안쪽원의 사각형 부분은 전부 정수쌍 좌표로 존재 가능하다. 그리고 바깥쪽 원은 상하좌우 4개의 정수 좌표쌍이 존재한다. 이제 사각형을 1x1 칸으로 나누었을 때 점의 개수를 확인해보자. 먼저 반지름 1인 원의 경우 총 4개의 1x1 사각형 위에 존재한다. 따라서 둘러싸는 사각형의 한변의 길이는 2가 된다. 그리고 총 4개의 변이 있으므로 점의 개수의 2x4 = 8 이 ..
23.04.20 파이썬 코딩 퀴즈#230 연속된 부분 수열의 합 (프로그래머스 스쿨) 이번 문제는 연속된 부분 수열의 합 이다. 문제는 굉장히 단순하다 전달받은 수열에서 임의의 두 인덱스 원소와 그 사이의 원소를 모두 포함하는 부분수열의 합이 k 가 되는 제일 짧은 구간의 수열을 찾아 해당 부분 수열의 첫번째 인덱스와 마지막 인덱스를 배열에 담아 return 하면 된다. 전체 sequence 의 길이는 100만이고, k 는 5 이상 10억 미만이다. 입출력 예 2번을 보면 return 값이 [6,6]이다. 즉 6번 인덱스 하나로도 부분 수열이 될 수 있다. 이런 문제들의 대부분은 dp 를 사용하는 문제가 많다. 하지만 해당 문제를 dp로 풀이하면 시간초과에 걸린다. 그래서 선택한 건 투포인터 유형으로 풀이를 진행하였다. 먼저 해당 k 가 sequence 안에 있는 경우는 바로 예외처리를 ..
23.04.19 파이썬 코딩 퀴즈#229 과제 진행하기 (프로그래머스 스쿨) 이번 문제는 과제 진행하기 문제이다. 음.. 설명을 정리하면 아래와 같다 1. 각 과제들은 시작 시간이 정해져 있다. 2. 새로운 과제를 시작할 시간이 되었다면, 기존에 진행중인 과제를 멈추고 새로운 과제를 시작한다. 3. 진행중인 과제를 끝냈을 때, 잠시 멈춘 과제가 있다면, 멈춰둔 과제를 이어서 진행하며, 만약 과제가 끝난 시간에 새로 시작해야할 과제와 멈춰둔 과제가 동시에 있다면 새로운 과제부터 시작한다. 4. 멈춰둔 과제가 여러 개일 경우, 가장 최근에 멈춘 과제부터 시작한다. 제한사항을 보면 plans 의 원소가 [이름, 시작시간, 요구시간] 으로 주어진다. 그리고 과제가 끝나는 시각과 새로운 과제를 시작해야 하는 시각이 같은 경우에는 과제가 끝난 것으로 판단해야 한다. 입출력 예 1번은 순서대..
23.04.19 파이썬 코딩 퀴즈#228 광물 캐기 (프로그래머스 스쿨) 이번 문제는 광물 캐기 문제이다. 문제에는 곡괭이와 광물 두가지 요소가 존재하며, 곡괭이 역시 광물과 같은 종류가 있다. 다이아몬드 곡괭이는 광물에 상관없이 피로도 1을 소모하며, 철은 다이아몬드는 5이고 나머지 광물은 1씩 소모한다. 돌 곡괭이의 경우 다이아몬드를 캘때 25, 철을 캘때 5, 돌은 1의 피로도를 소모한다. 한가지 재미있는 규칙은, 모든 곡괭이는 광물의 종류와 상관없이 5개를 캔뒤 사용할 수 없다. 규칙은 다음과 같다. 1. 보유한 곡괭이중 아무거나 하나를 선택해 사용할 수 없을 때까지 사용해야 한다. (무조건 5개를 캐야 한다) 2. 광물은 주어진 순서대로만 캔다. 3. 광산에 모든 광물을 캐거나, 더 사용할 곡괭이가 없을 때까지 광물을 캔다. 위 규칙으로 광물을 캘 때, 작업을 끝내기..