본문 바로가기

프로그래머스 퀴즈(Python)/level 4

(20)
23.07.14 파이썬 코딩 퀴즈#265 사칙연산(프로그래머스 스쿨) 이번 문제는 사칙연산 문제이다. 드디어 level 3 문제를 졸업하고, level 4로 넘어왔다. 일단 넘어오긴 했는데, level 3 에서도 삽질을 많이 했던터라... 문제를 보자마자 걱정이 앞선다. 해당 문제는 굉장히 심플한 문제이다. 주어지 수식에서 연산 순서를 설정하여 최대값을 도출해내면 된다. 즉, 괄호를 이용하여 연산 순서를 정하고, 해당 연산 순서에 따라 연산을 마친 뒤, 최대값을 찾아 반환하면 된다. 제한사항에 의해 배열의 길이는 항상 3 이상이다. 즉 숫자 2개, 연산부호 하나가 존재하며, 언제나 연산이 가능한 수식이 문자열로 분리되어 주어지게 된다. 그리고 다행스럽게도 연산자는 오직 '+', '-' 만 주어진다. level 2의 수식 최대화 문제가 생각나는 문제이다. 입출력 예 1번은 ..
23.07.13 파이썬 코딩 퀴즈#264 1,2,3 떨어트리기(프로그래머스 스쿨) 이번 문제는 1,2,3 떨어트리기 문제이다. 설명이 굉장히 길다. 즉, 문제가 그냥 평범한 로직 문제가 아니기에, 반드시 설명을 잘 읽고 규칙에 따라 진행해야 한다. 모든 부모 노드는 자식 노드와 연결된 간선 중 하나를 길로 설정하게 된다. 위 그림에서는 실선은 길인 간선이고, 점선은 아니다. 또한 모든 부모 노드는 자신의 자식 노드 중 가장 번호가 작은 노드를 가리키는 간선을 초기 길로 설정한다. 즉 위 그림의 1번 노드는 2,3 번 자식노드를 가지고 있으며 이 때 초기에 설정된 길은 2번 노드이다. 자 이제 게임의 규칙을 살펴보자. 1. 1번 노드(루트 노드)에 숫자 1,2,3중 하나를 떨어트립니다. 2. 숫자는 길인 간선을 따라 리프 노드(마지막 자식노드) 까지 떨어집니다. 3. 숫자가 리프 노드에..
23.07.13 파이썬 코딩 퀴즈#263 쌍둥이 빌딩 숲(프로그래머스 스쿨) 이번 문제는 쌍둥이 빌딩 숲 문제이다. 쌍둥이 빌딩 숲에는 높이가 1부터 n 까지 각 2채씩 총 2n 개의 빌딩이 존재한다. 그리고 한쪽 측면에서 바라보게 되면 count 채의 빌딩이 구분되어 보이게 된다. 즉 n 이 3 이고 count 2라고 주어졌을때, 은비의 시야에는 총 두 채의 건물이 보여야 하고, 이때의 배열 순서중 하나는 1,1,3,2,2,3 이 된다. 또한 같은 높이를 가지는 빌딩 사이에는 그보다 높은 빌딩이 존재하지 않는다. count 가 2 이기 때문에 1다음에는 반드시 3이 오거나 1이 2 뒤에 와야지만 count 채 만큼을 건물이 보이게 된다. 이 때의 배치 방법의 수를 return 하는 함수를 작성해야 한다. 제한 사항에서 알 수 있듯이 그 가짓수가 굉장히 많을 수 있으므로, 결과를..
23.07.10 파이썬 코딩 퀴즈#262 행렬과 연산(프로그래머스 스쿨) 이번 문제는 행렬과 연산 문제이다. 문제는 굉장히 단순하다 행렬에 적용 가능한 연산은 총 두가지 이고, 첫번째는 ShiftRow 이다 ShiftRow 명령은 모든 행을 아래로 한칸씩 이동한다. 즉 마지막 행이 가장 위로 올라오고 나머지는 그대로 유지된다. 다음은 Rotate 명령어 이다. 해당 명령어의 행렬의 바깥쪽의 원소들을 시계방향으로 움직인다. 기준점을 기준으로 시계방향이 아니라, 행렬의 바깥쪽 원소들만 통째로 시계방향으로 움직인다. 전달받은 rc 행렬에 비대칭은 존재하지 않는다. 입출력 예제는 특별히 챙겨볼 내용 없이 3번만 확인해보자. 보시다가 시피 Rotate 명령을 수행하게 되면 중간에 위치한 rc[1][1], rc[1][2] 는 움직이지 않는다. 바로 생각나는 대로 코드를 작성해 보았다. ..
23.07.05 파이썬 코딩 퀴즈#261 미로 탈출 (프로그래머스 스쿨) 이번 문제는 미로 탈출 문제이다. 보통의 미로 탈출 문제와는 다른, 색다른 TRAP 이라는게 존재한다. 1. 미로는 정해진 화살표 방향으로만 이동 가능하다 2. 함정으로 이동할 경우, 함정과 연결된 모든 화살표의 방향이 반대로 바뀐다. 문제 예시에 대한 이동설명이다. 즉 1번에서 출발하게 도착지인 3번까지 가야하며, 중간에 2번은 함정이다. 그리고 제한 사항은 위와 같다. 각 통로마다 S 만큼의 시간이 소요되므로, 최단으로 갈 수 있는 길을 선택해야 한다. 입출력 예 1번은 위 그림 설명과 같다. 입출력 예 2번을 그림으로 표현하면 위와 같다. 1번으로 돌아갈 경우, 다시 2번으로 향할 수 없기에 2번에서 갈 수 있는 다른 3번으로 가야 하고, 이 때 다시 2-> 3 이, 3->2로 바뀌기 때문에 2번으..
23.07.01 파이썬 코딩 퀴즈#260 매출 하락 최소화 (프로그래머스 스쿨) 이번 문제는 매출 하락 최소화 문제이다. 카카오 그룹 채용 관련 문제라는게 문제 설명에서 부터 느껴진다. 먼저 그림을 살펴보면 1. 각 원들은 직원 1명을 의미하며, 두개의 숫자는 (직원번호, 하루평균 매출액)을 의미하게 된다. 2. CEO 를 포함하는 모든 직원은 팀장 또는 팀원이라는 직위를 가지고 있으며, 위 그림에서는 관계도를 화살표로 나타내고 있다. 즉, 화살표가 시작되는 쪽은 팀장, 화살표를 받는 직원은 팀원을 의미한다. 2 -1 1번 직원은 화살표를 받지 않고 주기만 하기 때문에 CEO라 볼 수 있다. 즉, 팀장이다 2-2 7,4,6,8,2 번 직원은 화살표를 주지 않고 받기만 하기 때문에 팀원으로만 존재한다. 2-3 9, 5, 10번 직원은 화살표를 받음과 동시에 주기도 하기 때문에 어느팀의..
23.06.29 파이썬 코딩 퀴즈#259 트리 트리오 중간값(프로그래머스 스쿨) 이번 문제는 트리 트리오 중간값 문제이다. 주어진 n개의 점으로 이루어진 트리가 존재하면, 이 때 다음과 같은 것들을 정의한다. 1. 어떤 두 점 사이의 거리는 두 점을 잇는 경로 상 간선의 개수로 정의한다. 2. 임의의 3개의 점 a,b,c 에 대한 함수 f(a,b,c) = a와 b의 거리, b와 c의 거리, c와 a의 거리, 3값의 중간 값으로 정의한다. 이때 모든 f(a,b,c)에 대하여 가장 큰 값을 구해 return 하는 함수를 작성하시오. 입출력 예를 살펴보자. 입출력 예 1번을 그림으로 그리면 위와 같다. 이때 순서가 틀린 경우는 f 값이 동일하기 때문에 제외하면 f는 총 4개가 나온다. 이 때 각 f(a,b,c)의 값들을 나열하면, [1, 1, 2], [1,2,3], [2,1,3], [1,..
23.06.23 파이썬 코딩 퀴즈#258 동굴 탐험 (프로그래머스 스쿨) 이번 문제는 통굴 탐험 문제이다 카카오 관련 문제답지 않게 0번부터 방 번호가 매겨져 있다. 일단 설명을 더 확인해보자. 방 개수는 n 개 이고, 각 통로들이 연결하는 두 방의 번호가 담긴 2차원 배열 path, 프로도가 정한 방문 순서가 담긴 2차원 배열 order 가 매개변수로 주어진다. 프로도가 세운 탐험 계획은 다음과 같다. 1. 모든 방을 적어도 한 번은 방문해야 한다 2. 특정 방을 방문하기 전에 반드시 먼저 방문해야 할 방이 정해져 있으며, 1개 이거나 없을 수도 있다. 다만, 특정 방이 A 라고 가정하고 반드시 방문해야 할 방이 B 일때, B를 방문한 이후에 다른 C 방을 방문해도 문제없다. path 의 경우 두 바의 번호가 순서없이 존재한다. 하지만 order 의 경우 order[i] 의..