본문 바로가기

전체 글

(408)
23.07.15 파이썬 코딩 퀴즈#267 방의 개수 (프로그래머스 스쿨) 이번 문제는 방의 개수 문제이다. 문제는 굉장히 단순하다. (0,0)을 기준으로 전달받은 arrows를 따라 이동하며 선을 긋고, 최종적으로 사방이 막힌 방의 개수를 구하여 반환하면 된다. arrows 의 요소는 0~7 사이의 정수이며, 이동 방향은 위와 같다. 한가지 중요한 사실은 배열 arrows의 크기는 1~100,000 이라는 점이다. 만약 보드를 만들어서 arrows대로 그림을 그린다고 가정하면... 아.. 이 방법은 아닐것 같다. 일단 이동한 좌표들을 다 정리해서 한번 생각을 해보자. 임의의 지점에서 1번방향으로 먼저 움직이고 2번 방향으로 움직이는 arrows가 있다고 보면 먼저, 1번 방의 경우 시작한 지점으로 다시 돌아왔을때 방이 하나가 생성된다. 만약, 이동한 좌표들을 기록한다고 가정하..
23.07.14 파이썬 코딩 퀴즈#266 2차원 동전 뒤집기 (프로그래머스 스쿨) 이번 문제는 동전 뒤집기 문제이다. 전달받은 2차원 배열 beginning을 목표 배열인 target으로 만드는 최소한의 방법을 찾는 문제이며, 만약 목표 상태를 만들지 못할 경우에는 -1을 return 해야 한다. 특별한 제한 사항은 없다. 먼저 문제에 접근하는 방법을 생각해 보아야 한다. target 에 맞추기 위해 그 기준을 어디에다가 둘 것인가? 앞서 풀었던 고고학 최고의 발견 문제와 비슷하다는 느낌이 든다. 입출력 예제 1번을 거꾸로 실행해 보았다. 역시 어느것을 먼저 실행 하여도 똑같이 5번에 똑같이 target으로 만드는게 가능하다. 즉 기준이 되는 행,열을 찾아 그 행,열을 기준으로 뒤집기를 시행하면 된다는 의미이다. 해당 문제를 풀기 위해서는 먼저 값이 다른 열을 기준으로 행과 열 중 무..
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번 직원은 화살표를 받음과 동시에 주기도 하기 때문에 어느팀의..