본문 바로가기

Topics277

[프로그래머스] 디펜스 게임 (Lv 2) https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 쉽게 아이디어도 보이지 않았고, 하도 heap을 안 쓰다 보니 고전한 문제.자료구조로서 heap의 역할은 최대/최소값을 빠르게 찾아주는 역할임을 잊지 말자.아이디어는 그리디이다. 만일 진행하다가, 막힐 경우 그전까지 가장 쎈 스테이지에다가 스킵을 투척해버린다.막힐 경우 바로 이를 시행하기 때문에, 던지고도 또 막힐 일은 없다.아, 적군의 합도 갱신해줘야 하는데 list 합 돌리면 늦어진다. 따라서 합은 따로 그때그때 계산해줘야 한다.힙의 최댓.. 2024. 11. 1.
[프로그래머스] 인사고과 (Lv 3) https://school.programmers.co.kr/learn/courses/30/lessons/152995# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 정렬 문제에 크게 당했다.어느 것을 오름차순으로 할지, 내림차순으로 할지. 잘 생각해야 하는 문제.이와는 별도로, 정렬을 하면서 원래 찾아야 할 놈의 위치가 애매해진다.이에 대한 처리도 고려해야 한다.아무튼, 구하는 1명만 구하면 되는 애라서 가능한 풀이이다.def solution(scores): answer = 1 inho_att, inho_comp = scores[0] inho_sum = inho_att + inho_co.. 2024. 10. 29.
[프로그래머스] 단어 변환 (Lv 3) https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 앞에서 푼 문제와 유사하나, 이번에는 그래프가 꽁으로 주어져 있지 않아 직접 만들어야 한다.방문 여부만 체크하면 되므로, 이번에는 굳이 거리를 다 저장할 필요는 없다.! from collections import dequedef bfs(start, end, vertex, visited): # 시작지점의 거리는 0 visited[start] = True queue = deque() queue.append((start, 0)).. 2024. 10. 29.
[프로그래머스] 가장 먼 노드 (Lv 3) 2트 https://school.programmers.co.kr/learn/courses/30/lessons/49189예에전에 굉장히 삽질했던 문제 같은데,이번에는 너무 수월하게 풀어버렸다.그냥 bfs로도 풀린다. 아이디어는 간단하다(1) 양방향 그래프니까, 그냥 양방향을 다 넣어준다.(2) 방문을 하되, 거리를 저장한다. 어차피 그리디하게 생각하면 bfs가 각 노드 최단 방문거리다.즉, 이미 방문한 적이 있으면 그게 이미 최단거리라서 더 뭘 생각할 거리가 없다.!다시 말해, visited를 True/False가 아니라 -1로 해놓고 0 이상의 거리면, 방문했음으로 판정하게visited를 유연하게만 바꿔주면 되는 엄청나게 쉬운 문제다. 헤매지 말자.다익스트라 그런거 필요 없다. 이 문제. 쉽게 생각하자.# b.. 2024. 10. 28.
[프로그래머스] 의상 (Lv 2) https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해시 + 간단한 수학 문제이다.문제는 4개의 의상 종류지만 N개로 확장시키는 아이디어는 수학에 있다.모든 의상 종류 중 최대 1개씩 고르는 경우의 수를 어떻게 구할까? "안 고른다" 라는 선택지를 추가하면 된다. 그리고 맨몸은 안되니 -1. 간단하다.어차피 같은 이름의 의상도 없으니 앞은 더미고, 뒤만 세주면 된다. O(n)이면 해결되는 간단한 문제.def solution(clothes): clothes_dict = {} for c .. 2024. 10. 28.
[프로그래머스] n^2 배열 자르기 (Lv 2) 1차 시도배열을 펼치는 방법으로 접근하였다. 하지만 TLE!n이 너무 크다. 이런 방식으론 안되지만, 1차 풀이에서 아이디어를 얻을 수 있다.def solution(n, left, right): array = [[0 for _ in range(n)] for _ in range(n)] for i in range(n): for j in range(n): array[i][j] = max([i, j]) + 1 # 2D -> 1D 로 펼치는 방법 알아두자! array_join = [] for cur_arr in array: array_join += cur_arr return array_join[left:right+1]2차 .. 2024. 10. 28.