본문 바로가기
반응형

프로그래머스111

[프로그래머스] 방의 개수 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.
[프로그래머스] 추억 점수 Python 풀이 문제 구현 dict에 사람과 그리움 점수를 담고 photo에서 계산하면서 result에 담으면 된다. 사실 레벨 0으로 들어가도 될 것 같은 문제다. 코드 from collections import defaultdict def solution(name, yearning, photo): ndict = defaultdict(int) answer = [] for n, y in zip(name, yearning): ndict[n] = y for p in photo: sumyearn = 0 for n in p: sumyearn += ndict[n] answer.append(sumyearn) return answer 다른 풀이 파이썬의 또다른 재미는 숏코딩이다. def solution(name, yearning, .. 2023. 4. 6.
[프로그래머스] 바탕화면 정리 Python 풀이 문제 문제가 매우 길어서 링크로 대체하고 설명을 쓰겠다. https://school.programmers.co.kr/learn/courses/30/lessons/161990 바탕화면에 파일이 여러 개 있는데 이를 한 번에 묶을 수 있는 최단 루트를 구해서 좌측상단, 우측하단의 좌표를 구하면 된다. 구현 문제를 그대로 따라가면서 시간복잡도를 최소화하려면 구현이 복잡해진다. 좌측 상단에서 거리가 0인 포인트 부터 시작해서 파일을 찾아야 한다. [0,0] [1,0], [0,1] ...... 이렇게 해서 아래와 오른쪽에 동시에 있다면 그 점을 넣고 우측하단에서도 같이 하면 된다. 하지만 이 문제는 레벨 1이라 파일 위치가 복잡하지 않기 때문에 모든 파일을 찾아서 모두 x,y좌표가 들어있는 배열에 더해주고 최대,.. 2023. 4. 6.
반응형