반응형 Coding Test/Python53 [프로그래머스] 가장 많이 받은 선물 python 풀이 문제 카카오 겨울 인턴십 기출문제로 난이도는 낮지만 정답률도 낮은 문제라 가져와 봤다. 구현 시뮬레이션은 쉽지만 어떤 타입의 변수에 입력값들을 담아야 할지가 이 문제의 키라고 생각한다.모두 배열로 만들어 매번 배열의 index를 찾게 하는 것보다는dict에 담아서 조금 더 시간의 효율을 얻고 싶었다. 아래 코드에서 살펴보자코드 f에 각 이름 별 index를 담았고나머지는 리스트에 다 담았다. 시뮬레이션 로직은 최 하단의 for문 밖에 없어서 문제 자체는 쉽다.그래서 어떤 data type을 사용할지가 중요한 문제라고 생각된다.다른 풀이 많은 사람들이 이 방식으로 풀었고, 더 좋은 방식은 보이지 않아서 다른 풀이는 가져오지 않았다. 2024. 12. 21. [프로그래머스] 붕대 감기 python 풀이 문제 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/250137 구현 시간에 따라 반복하면 매우 비효율적이기 때문에attack 배열을 반복하면서 각 attack 사이의 delta 값을 위주로 계산해서 풀이 하려고 했다. 아래 코드를 보면 조금 더 쉽게 이해할 수 있을 것이다.코드 조금 잘리긴 했지만 설명을 하자면 각 attack time 간격을 계산해서 delta_time에 넣었다.공격당하기 전까지의 시간까지 회복할 수 있으니 -1을 해줬다.health의 최대치를 넘지 않게 해 주었고, 회복을 완료할만한 시간이 있었는지는 //연산으로 계산한 후 damage만큼 빼줬다. 계산식은 아래와 같다.health = min(max_healt.. 2024. 12. 20. [프로그래머스] 택배 배달과 수거하기 Python 풀이 문제 택배를 배달하고 효율적으로 수거하는 방법을 구하는 문제다. 구현 최대한 먼 곳부터 처리하는 것이 효율적이기 때문에 deliveries, pickups 리스트를 뒤집고 시작할 것이다. 그러고 맨뒤부터 차례대로 배달과 수거를 미리 계산하도록 구현하면 되는 간단한 문제다. 코드로 보면 이해가 쉬울 것이다. 코드 def solution(cap, n, deliveries, pickups): answer=0 d,p=0,0 deliveries.reverse() pickups.reverse() for i in range(n): d+=deliveries[i] p+=pickups[i] while d>0 or p>0: d-=cap p-=cap answer += (n-i)*2 return answer 여기서 d와 p는 .. 2023. 6. 29. [프로그래머스] 배열 조각하기 Python 풀이 문제 사실 어려운 문제가 아닌데 정답률이 낮게 되어 있어서 후다닥 블로그로 정리를 해봤다. 구현 s(start), e(end) 포인터 두 개를 조작하면서 마지막에 slice를 반환하도록 구현을 할 것이다. query 배열을 index 가지고 돌면서 s와 e를 각각 조작해 주면 된다. 아예 slice로 다 해도 되지만 성능상 좋지 않아서 이렇게 설계를 했다. 코드 def solution(arr, query): s,e=0,0#0,len(arr) for i in range(len(query)): if i%2: s+=query[i] else: e=s+query[i] return arr[s:e] if s!=e else [-1] 사실 e도 arr의 길이로 초기화해주어야 하는 게 정상적이지만 초반에 습관적으로 0,0.. 2023. 4. 21. 이전 1 2 3 4 ··· 14 다음 반응형