본문 바로가기
728x90
반응형

프로그래머스/Python163

[프로그래머스] 가장 큰 정사각형 찾기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 1로 이루어진 가장 큰 정사각형의 넓이를 구하는 문제이다.정사각형의 넓이를 구하는 문제이므로 한 변의 길이를 구하여 해당 정사각형의 넓이를 구한다.이 문제를 해결하기 위해 DP 알고리즘을 활용하여 시작 위치부터 마지막 위치까지 탐색하며 해당 위치까지의 가장 큰 정사각형의 한 변의 길이를 저장한다.그리고 모든 탐색이 끝난 후 가장 긴 변의 길이를 구해 제곱하여 가장 큰 정사각형의 넓이를 구한다.DP 알고리즘의 결과로 정사각형 변의 길이를 저장할 때 각 위치별 값은 해당 값의 .. 2024. 7. 3.
[프로그래머스] 리코쳇 로봇 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 말이 시작 위치에서 목표 위치까지 이동할 수 있는지, 만약 이동할 수 있다면 이동하는 최소 횟수를 구하는 문제이다.해당 문제에서 가장 중요한 부분은 말을 상, 하, 좌, 우로 이동할 때 장애물이나 벽에 부딪힐 때까지 쭉 미끄러져 이동한다는 점이다.이때 목표 위치가 있더라도 장애물이나 벽이 아니면 그냥 미끄러져 이동한다는 점이다.BFS 알고리즘을 활용하여 시작 위치에서 각 4방향으로 이동할 수 있는지 확인하고, 이동할 수 있으면 미끄러져 이동한다. 이동하면 이동한 위치에 현재.. 2024. 7. 2.
[프로그래머스] 테이블 해시 함수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 처음에 정렬만 잘해주면 나머지는 쉽게 해결할 수 있다.테이블의 튜플을 정렬할 때 기준은 2개가 있는데, col 번째 칼럼의 값을 기준으로 오름차순 정렬하고 만약 그 값이 동일하면 기본키인 첫 번째 칼럼의 값을 기준으로 내림차순 정렬한다.해당 기준으로 정렬을 하려면 거꾸로 기본키 값으로 먼저 내림차순 정렬을 하고, 이후에 col 번째 칼럼의 값을 기준으로 정렬하면 원하는 정렬 후 결과를 얻을 수 있다.테이블의 튜플을 정렬했다면 S_i를 각각 구하여 모든 S_i 결과를 XOR .. 2024. 7. 1.
[프로그래머스] 거리두기 확인하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 각 대기실에 있는 모든 응시자가 거리두기를 지키고 있는지 확인하는 문제이다.응시자 간 거리가 맨해튼 거리로 2 이하이면 안되고, 만약 거리가 맨해튼 거리로 2 이하일 경우 그 사이가 파티션으로 막혀있으면 거리두기를 지키는 것이다.모든 응시자가 거리두기를 지키고 있는지 확인하려면 응시자 간 모든 거리를 판별해야 한다.만약 두 응시자 간 거리가 2 이하라면, 두 응시자는 가로로 나란히, 세로로 나란히, 대각선으로 나란히, 총 3가지 경우 중 하나로 위치해 있을 것이다.이 3가지.. 2024. 6. 26.
[프로그래머스] 여행경로 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 모든 경로를 탐색하는 문제이므로 dfs 알고리즘을 활용해 해결해보고자 하였다.한 경로에서 티켓은 모두 사용해야 하며, 티켓은 한 번씩만 사용할 수 있으므로 이를 저장하기 위한 방문 리스트를 생성한다.만약 경로를 저장하는 리스트의 원소 개수가 티켓의 개수 + 1개이면(시작 ICN 포함) 모든 티켓을 한 번씩만 사용한 경로이므로 정답 리스트에 해당 경로를 추가한다.그게 아니라면 티켓을 인덱스를 붙여 하나씩 불러오고 현재 위치에서 출발하는 티켓 중 아직 사용하지 않은 티켓이면 해.. 2024. 6. 15.
[프로그래머스] 미로 탈출 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정미로를 최적의 경로로 탈출하는 문제는 대부분 BFS 알고리즘으로 해결할 수 있다.해당 문제는 레버가 존재하는데, 이 때문에 BFS 알고리즘을 두 번 사용해야 한다.우선 레버를 먼저 당겨야 하므로 시작 위치부터 레버의 위치까지 이동하며 최적의 경로를 찾고, 다음으로 레버의 위치부터 출구의 위치까지 이동하며 최적의 경로를 찾아 두 최적의 경로를 합산하여 최종 결과를 도출한다.두 가지 경로 중 하나라도 결과가 나오지 않는다면 미로를 탈출할 수 없다는 것이다. BFS 알고리즘을 구현한 함수에서.. 2024. 5. 26.
[프로그래머스] 행렬 테두리 회전하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 알고리즘을 사용하지 않고 우선 차근차근 문제를 살펴보며 문제에서 실행되는 행동을 그대로 동작할 수 있도록 코드를 작성해 본다.초기 행렬을 생성하는 함수, 회전하는 숫자들의 리스트를 생성하고 최솟값을 구하는 함수, 행렬을 회전 이후 행렬로 수정하는 함수를 각각 생성하여 활용한다. 초기 행렬을 생성하는 함수를 정의한다. def createMatrix(matrix)한 행에 해당하는 리스트를 저장할 리스트를 생성한다. li = list()숫자는 1부터 주어진 행과 열의 곱까지 들어.. 2024. 5. 19.
[프로그래머스] 수식 최대화 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 각 +, -, * 연산자의 우선순위에 따라 수식을 계산한 결과 중 절댓값이 가장 큰 값을 출력하는 문제이다.3 연산자의 우선순위 조합에는 총 6가지 경우가 존재하고 각 경우에 따른 수식을 계산하고 그 절댓값을 구한다.6가지 경우의 절댓값 중 가장 큰 값을 출력하면 된다.+, -, * 연산자에 따른 수식 연산을 진행할 함수 3개를 생성하여 각 연산자에 따른 수식을 계산한다.처음에 수식 문자열을 숫자와 연산자로 구분해 주기 위한 함수를 생성하여 최초의 수식을 분리하여 연산을 수.. 2024. 5. 11.
[프로그래머스] 괄호 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 올바르지 않게 되어 있는 괄호를 올바르게 만들어야 하는 문제이다.문제에 나와있는 것처럼 우선 문자열을 나누고 앞부분의 문자열이 올바른 괄호이면 뒷부분의 문자열만 확인한다.앞부분의 문자열이 올바르지 않은 괄호이면 위에서 설명한 방법으로 괄호를 올바르게 수정한다.설명에 따라 문제를 해결하기 위해 총 4가지 동작이 반복되는데, 우선 문자열을 2개로 나누는 동작이 필요하고, 나눈 문자열에서 앞부분의 문자열이 올바른 괄호인지 확인하는 동작이 필요하다.또한 올바른 괄호가 아닐 때 괄호.. 2024. 5. 5.
[프로그래머스] 가장 먼 노드 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 문제 설명2. 풀이과정해당 문제는 경로를 통해 노드를 탐색하며 1번 노드에서 각 노드까지 최단거리를 구한 뒤, 가장 멀리 떨어진 노드의 개수를 구하면 되는 문제이다.1번 노드에서 각 노드까지 최단거리를 구하기 위해 BFS 알고리즘을 활용하여 각 노드를 탐색해 나간다.연결된 노드를 탐색하며 다음 노드에서 최단거리는 이전 노드에서 최단거리에 1을 더해주면 된다.거리를 저장할 리스트를 생성하고 연결된 노드를 탐색해 나갈 때마다 다음 노드에서의 최단거리를 저장해 나간다. BFS 알고리즘을 활용할 때 deque 자료.. 2024. 5. 4.
728x90
반응형