프로그래머스(46)
-
프로그래머스 디스크 컨트롤러 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr answer에 각 작업의 요청부터 종료까지 걸린 시간의 합을 저장하고, 마지막에 이를 작업의 개수로 나눠 최종 답을 반환했습니다. 우선 jobs를 요청시점이 이른 순대로, 요청 시점이 같다면 소요시간이 적은 순대로 정렬하여 queue로 변환하고, 현재 시점을 표현하는 now라는 변수를 만들었습니다. now는 첫 작업의 요청시점으로 초기화했습니다. jobs의..
2021.06.01 -
프로그래머스 등굣길 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr town이라는 딕셔너리를 정의하고, key에는 각 위치의 좌표, value에는 각 위치에 도달하기까지 가능한 모든 경우의 수를 저장했습니다. 오른쪽과 아래쪽으로만 움직일 수 있기 때문에 현재 위치의 왼쪽과 위쪽의 값을 더해 현재 위치의 값을 갱신했습니다. 이때 왼쪽이나 위쪽에 길이 없어 index Error가 날 수 있는 곳은 길이 없는 곳은 제외하고..
2021.06.01 -
프로그래머스 N-QUEEN 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/12952 코딩테스트 연습 - N-Queen 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 programmers.co.kr 항상 한 행에 하나의 퀸만 놓을 수 있으므로 첫 번째 행부터 차례대로 퀸을 놓고, 그 퀸이 공격할 수 있는 범위가 아닌 다음 행의 위치에 다음 퀸을 위치하는 방법으로 풀이했습니다. attackRange 함수는 현재 퀸의 위치와 n을 입력받으면, 그 퀸이 공격할 수 있는 범위를 반환합니다. 이때 첫 번째 행부터 순서대로 내려가며 퀸을 위치시키기 때문..
2021.06.01 -
프로그래머스 메뉴 리뉴얼 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr combinations를 사용해 모든 메뉴 조합을 구하고, 이를 combs에 저장합니다. 이후 이 combs를 메뉴 개수가 많은 순대로 정렬하고, 개수가 같다면 빈도 수가 높은 순대로 정렬합니다. 각 길이 별로 가장 빈도수가 높은 메뉴 조합을 answer에 append하고, 최종적으로 answer를 알파벳 순으로 정렬한 후 반환합니다. from itertools ..
2021.06.01 -
프로그래머스 타겟 넘버 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 먼저 numbers의 모든 숫자를 더한 값을 total로 놓고, total이 target과 같으면 모든 부호를 +로 하는 한 가지 방법밖에 없으므로 1을 반환합니다. 그 외의 total이 target보다 큰 경우엔 부호를 -로 바꿔야 하는 숫자들의 조합을 알아냅니다. total과 target의 차이를 2로 나..
2021.06.01 -
프로그래머스 여행경로 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 💡 재귀함수를 이용해 풀이했습니다. 재귀함수 __help 내에선 아직 사용하지 않은 티켓들의 리스트를 하나씩 확인하면서, 마지막으로 방문한 공항에서 출발하는 티켓들을 확인합니다. 이에 해당하는 모든 티켓들에 대해 다시 재귀함수를 호출하는데, 이때 tickets에서 현재 티켓은 제외하고, answer에는 현재 티켓의 도착 공항을 추가하여 호출합..
2021.04.29