반응형 프로그래머스109 [프로그래머스] 배열 조각하기 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. [프로그래머스] 요격 시스템 python 풀이 문제 이 입출력 예 설명을 보면 이해하기 쉬울 것이다. 구현 레벨 2로 되어 있지만 쉬운 문제다. 먼저 미사일을 정렬하는데 미사일이 끝나는 순서로 정렬을 한다. 그 후 제일 빨리 끝나는 미사일의 시작지점이 기존 요격지점보다 크다면 미사일을 요격하고 그 끝나는 지점을 저장한 후 answer에 1을 더해준다. 말로 하기에는 설명이 어려운데 코드로 보면 이해가 쉬울 것이다. 코드 def solution(targets): answer, end = 0, 0 for s, e in sorted(targets, key = lambda x : x[1]): if s>=end: end = e answer += 1 return answer 이렇게 end를 바꿔주면서 정답을 갱신해 주면 되는 쉬운 문제이다. 다른 풀이 아직까지.. 2023. 4. 17. [프로그래머스] 방의 개수 Python 풀이 프로그래머스 레벨 5 방의 개수를 풀어봤다. 레벨 5중에 정답률이 많이 높은 문제라 도전해 봤는데 실제 난이도는 3~4 정도인 느낌이다. 문제 문제는 위와 같다. 예시로 다음 그림이 주어진다. 이렇게 구역이 나눠지면 그 구역의 개수를 세면 된다. 구현 1차적으로 구역이 생기는 경우는 기존에 방문했던 점을 다시 방문했을 때이다. 이것만 생각했다면 실행할 때 테스트케이스는 맞지만 제출을 하면 다 틀리는 상황을 볼 수 있다. 추가로 확인해야 되는 점은 기존에 연결된 간선이 있는지다. 따라서 기존에 연결된 간선이 없고 방문했던 노드라면 그때 정답의 개수를 추가해 주면 된다. 여기서 대각선의 상황도 추가로 생각해야 한다. 하지만 이 상황은 포인트의 개수를 두배로 늘리며 접근하면 대각선 상황 자체가 사라진다. 아래.. 2023. 4. 13. [프로그래머스] 달리기 경주 Python 풀이 문제 구현 이 문제는 효율성 테스트는 없지만 그냥 배열로 구현하면 시간 초과가 뜬다. 그래서 dict를 사용해서 구현해야 한다. dict에 이름이 키, index가 value 인 구조로 players 리스트를 가져온다. 그리고 callings 리스트를 돌면서 값을 swap 해주면 된다. dict로 바꿔줘야 된다는 것만 주의하면 레벨 1이라서 쉽게 구현할 수 있다. 코드 def solution(players, callings): pdic={} for i in range(len(players)): pdic[players[i]]=i for call in callings: idx = pdic[call] temp = players[idx-1] players[idx-1], players[idx] = players[.. 2023. 4. 7. 이전 1 2 3 4 ··· 28 다음 반응형