본문 바로가기
반응형

Python37

[프로그래머스/Python] 주식가격 문제 문제 설명 ">HTML 삽입미리보기할 수 없는 소스   풀이 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스 [문제 풀이] 이 문제는 주식의 가격이 떨어지면 몇 초 뒤에 가격이 떨어졌는지를 기록해 return하는 문제다.만약 가격이 떨어지지 않았다면, 끝났을 시간을 고려해 return 하면 된다. 2중 for문으로 비교하면 O(n^2)의 시간복잡도를 갖기 때문에 시간 초과가 걸리게 될 것이다.그러므로 다른 방법으로 풀어야 하는데, stack 구조를 이용하면 쉽게 풀 수 있다. 항상 stack의 맨 위에 어떤 주식 가격이 가장 높은 시간을 둔다.만약 stack의 맨 위에 있는 주식보다 가격이 낮다면, 가격이 떨어지는 순간이므로 시간을 계산해 .. 2024. 5. 19.
[프로그래머스/Python] 미로 탈출 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [풀이] 최소 횟수를 구해야 하므로 BFS로 Start지점에서 Lebber까지의 최소 횟수를 구하고, Lebber에서 Exit까지 다시 BFS로 최소 횟수를 구하면 되는 문제다. 즉, BFS를 두 번 써서 해결하면 된다. ​ [요약] 1. Start지점을 찾고 Lebber 까지 걸리는 이동 횟수를 계산한다. 2. Lebber까지 이동이 가능하다면 Lebber부터 Exit까지 이동횟수를 계산한다. 3. 두 이동횟수를 더한 값을 리턴한다. HTML 삽입 미리보기할 수 없는 소스 dx = [0,0,1,-1] dy = [1,-1,0,0] defaultMap=[] defaultMap2=[] lenX=0 lenY=0 lebberX=-1 .. 2024. 1. 6.
[프로그래머스/Python] 연속 펄스 부분 수열의 합 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 문제를 보면서 연속된 펄스 수열의 합 중 최대를 구하는 문제이므로 부분 합으로 풀 수 있겠다는 생각이 들었다. 주어진 sequence의 길이만큼의 펄스 수열을 곱한 뒤, 첫번째 원소 부터 마지막 원소까지 순차적으로 더해서 리스트에 저장했다. 그 후 리스트에 저장된 값 중 최솟값과 최대값을 구해서 maxValue - minValue를 계산했다. maxValue-minValue가 정답인 이유는 쉽게 생각할 수 있다. (이때 maxValue는 양수, minValue는 음수라 가정) 예를 들어 0 < a < b 일 때, [0, a] 구간의 합이 최소이고 [0,b] 구간의 합이 최대라면 [0, b] 구간 합의 입장에서는 구간 합이 음수.. 2024. 1. 6.
[프로그래머스/Python] 요격 시스템 HTML 삽입 미리보기할 수 없는 소스 [문제 설명] ​ A나라가 B나라를 침공했다. 요격 시스템이 있지만 비용이 있어서 요격 횟수를 최소로 해야하기 때문에 미사일의 요격을 최소로 하는 횟수를 구하는 문제다. 이때 상대방의 미사일이 날아오는 구간을 알 수 있기 때문에 요격 시스템으로 상대방의 미사일의 구간사이에 요격을 하면 요격에 성공한 것으로 간주한다. HTML 삽입 미리보기할 수 없는 소스 [풀이] 먼저 미사일들의 s 값을 기준으로 정렬을 했다. (이전에 요격에 성공한 미사일의 구간과 이번에 요격할 미사일의 구간이 겹치는지를 확인하기 위해서) ​ s를 기준으로 정렬을 했기 때문에 현재 구간의 s부분이 이전 구간의 e보다 크거나 같은지 비교한다. 크거나 같을 경우 요격할 수 있는 구간을 벗어났기 때문에.. 2024. 1. 5.
[프로그래머스/Python] 상담원 인원 HTML 삽입 미리보기할 수 없는 소스 [문제 설명] 멘토 n명이 있으며, 상담 유형은 k개가 있다. 이때 상담 유형 당 최소 한명의 멘토가 배치되어야 하며, 상담이 진행되는 동안에는 다른 인원은 상담을 받을 수 없다. 이때, 모든 인원의 상담 대기시간의 합의 최소를 구하는 문제다. ​ - 만약 참가자의 상담 유형을 담당하는 멘토가 모두 상담 중이라면, 자신의 차례가 올 때까지 기다린다. 참가자가 기다린 시간은 참가자가 상담 요청했을 때부터 멘토와 상담을 시작할 때까지의 시간이다. HTML 삽입 미리보기할 수 없는 소스 제한사항을 보면 reqs의 길이가 300개 밖에 되지 않는다. 게다가 상담원의 최대 인원은 20명, 상담 유형은 5개이므로 완전 탐색으로 문제를 풀어도 시간안에 계산이 되겠다는 생각이 들.. 2024. 1. 5.
[프로그래머스/Python] 정수 삼각형 HTML 삽입 미리보기할 수 없는 소스 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾는 문제다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능하다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 숫자의 합의 가장 큰 경우를 return하는 문제다. HTML 삽입 미리보기할 수 없는 소스 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. HTML 삽입 미리보기할 수 없는 소스 triangle result [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 HTML 삽입 미리보기할 수 없는 소스 .. 2024. 1. 5.
[SWEA/Python] 17643번 - 로봇 HTML 삽입 미리보기할 수 없는 소스 [문제] 2차원 평면의 원점에서 로봇이 움직이기 시작하는데 특정 좌표(x,y)에 있을 가능성이 있는지 구하는 문제다. 특징은 로봇은 상하좌우 4방향으로 이동할 수 있고 t초마다 3^t 만큼 고른 방향으로 이동한다. ​ HTML 삽입 미리보기할 수 없는 소스 처음에는 DFS처럼 완전 탐색을 해서 풀려고 했지만 시간 초과가 떴다. 그래서 어떻게 다른 방법으로 풀 수 있을까 생각해봤다. $$\frac{3^t}{2}>\sum_{n=0}^{t-1} 3n\quad (t\neq 0)$$​ 그러던 중 위의 식이 항상 성립하는 것을 찾았는데, 쉽게 생각하면 a라는 수에 1/3을 계속 곱한 등비수열은 a/2에 수렴한다는게 떠올랐다. 그렇기 때문에 t=n일 때, t=(0 ~ n-1)까.. 2024. 1. 5.
[SWEA/Python] 16606 - 동전 색 찾기 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] n종류의 동전이 있을 때, 동전의 모양은 완전 똑같고 색이 달라서 n종류의 동전을 구분하기 위해 얼마를 요청해야 하는지 구하는 문제다. HTML 삽입 미리보기할 수 없는 소스 [풀이] 서로 다른 동전은 서로 배수관계를 갖고 있다. 만약 V_i와 V_(i+1)이 2배 차이라면 V_i원의 동전의 2배가 되는 돈을 요청 하게 되면 은행은 V_(i+1)원 동전 하나를 주게 된다. 그러므로 V_i원의 동전의 색을 확인하려면 요구하는 돈 X는 V_i HTML 삽입 미리보기할 수 없는 소스 def fx(dic): # n=배수 a=0 ans=[] # 각 배수마다 몇 회차가 필요한지 저장할 리스트 for i in dic.keys(): # dic의 key는 i배수 관계.. 2024. 1. 5.
[SWEA/Python] 5250 - 최소비용 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] 출발지에서 도착지까지의 높이가 2차원으로 주어진다. 상하좌우로만 이동 할 수 있으며, 이동시 비용은 1, 만약 이동한 곳이 더 높은 지역이라면 높이의 차이 만큼 비용이 증가한다. HTML 삽입 미리보기할 수 없는 소스 입력으로 받은 값에서 가중치를 2차원 리스트에 저장했고, 가중치를 저장할 2차원 리스트를 큰 값으로 초기화했다. 그리고 for 문을 돌려서 N*N의 좌표 중 방문하지 않은 지점 중 가중치가 가장 작은 지점을 탐색하면 시간초과가 났기 때문에, 방문하지 않은 지점이면서 가중치는 초기값이 아닌 좌표를 now_lst에 저장해 탐색했다. 그리고 그중에서 가중치의 값이 가장 작은 지점이 선택되면 now_lst에서 제거하고 방문 표시를 한 다음 그 .. 2024. 1. 5.
[SWEA/Python] 5249 - 최소 신장 트리 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] 노드와 간선의 수가 주어지면 이 그래프로 부터 최소 신장트리를 만들고 최소신장트리를 구성하는 간선의 가중치를 모두 더하는 문제다. HTML 삽입 미리보기할 수 없는 소스 [풀이] 입력으로 받은 값에서 가중치를 2차원 리스트에 저장했고, 그 외의 값들은 최댓값인 10보다 큰 11로 저장했다. 그리고 방문한 지점은 vistied에 True, False로 저장해 구분했다. 처음 시작은 0번 노드에서 시작을 했고, 가중치를 0으로 주었다. 이후 노드의 수 만큼 for문을 돌려 방문을 하지 않은 노드 중 가중치가 가장 노드를 선택해 가중치를 탐색하도록 코드를 작성했다. HTML 삽입 미리보기할 수 없는 소스 def MST_PRIM(node_s): key=[11.. 2024. 1. 5.
[백준/Python] 2635번 - 수 이어가기 HTML 삽입 미리보기할 수 없는 소스 다음과 같은 규칙에 따라 수들을 만들려고 한다. 첫 번째 수로 양의 정수가 주어진다. 두 번째 수는 양의 정수 중에서 하나를 선택한다. 세 번째부터 이후에 나오는 모든 수는 앞의 앞의 수에서 앞의 수를 빼서 만든다. 예를 들어, 세 번째 수는 첫 번째 수에서 두 번째 수를 뺀 것이고, 네 번째 수는 두 번째 수에서 세 번째 수를 뺀 것이다. 음의 정수가 만들어지면, 이 음의 정수를 버리고 더 이상 수를 만들지 않는다. 첫 번째 수로 100이 주어질 때, 두 번째 수로 60을 선택하여 위의 규칙으로 수들을 만들면 7개의 수들 100, 60, 40, 20, 20 , 0, 20이 만들어진다. 그리고 두 번째 수로 62를 선택하여 위의 규칙으로 수들을 만들면 8개의 수들 .. 2024. 1. 5.
[백준/Python] 11286번 - 절댓값 힙 HTML 삽입 미리보기할 수 없는 소스 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 절댓값이 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 정수는 .. 2024. 1. 5.
[백준/Python] 11279번 - 최대 힙 HTML 삽입 미리보기할 수 없는 소스 널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 가장 큰 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 자연수는 2^31보다 작다. HTML 삽입 미리보기할 수 없는 소스 입력.. 2024. 1. 5.
[백준/Python] 10816번 - 숫자 카드 2 HTML 삽입 미리보기할 수 없는 소스 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되.. 2024. 1. 5.
[백준/Python] 1920번 - 수 찾기 HTML 삽입 미리보기할 수 없는 소스 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -2^31 보다 크거나 같고 2^31보다 작다. HTML 삽입 미리보기할 수 없는 소스 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. HTML 삽입 미리보기할 수 없는 .. 2024. 1. 4.
반응형