Python

PS/BaekJoon ·
문제난이도: 플레티넘 514003번: 가장 긴 증가하는 부분 수열 5 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구해야 한다.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 다음과 같이 가장 긴 증가하는 부분 수열 시리즈가 있다.LIS (Longest Increasing Subsequence) 알고리즘은 가장 긴 증가하는 부분 수열을 찾는 문제를 해결하는 알고리즘으로 주어진 수열에서 순서를 유지하면서, 원소들이 증가하는 부분 수열 중 가장 긴 수열을 찾아내는 것을 목표로 한다. 만약 해당 알고리즘이 생소하다면 위 시리즈를 순서대로 풀어보는 것을 추천한다.알..
PS/LeetCode ·
문제2. Add Two Numbers두 개의 비어있지 않은 링크드 리스트가 주어진다. 각 노드는 0 또는 자연수로 채워져있다. 숫자는 역순으로 저장돼있고, 두 노드의 각 숫자의 합을 연결 리스트로 반환한다.l1 = [2, 4, 3], l2 = [5, 6, 4]라면 결과는 [7, 0, 8]이 나와야 한다.말 그대로 두 링크드 리스트에서 각 노드의 숫자를 합해서 하나의 노드로 만든다는 말이다.2 + 5 = 74 + 5 = 10 이지만 제한 사항에 다음과 같은 내용이 있다. (0 10은 9보다 크기 때문에 1을 다음 두 노드 간의 합에 반영한다.이렇게 342 + 464 = 807이라고 돼있는 설명이 더 헷갈리게 한다🤪노드의 값이 0과 9사이 값이라는 걸 제한사항이 아닌 문제 위쪽에 적어주는 것이 덜 헷갈릴 ..
PS/LeetCode ·
문제3016. Minimum Number of Pushes to Type Word II 영어 소문자로 이루어진 word가 주어진다. 전화기 키패드의 키들은 영어 소문자로 이루어진 고유한 collection과 매핑돼있다. 각 키들을 눌러서 word를 만들 수 있다.예를 들어, 2번 키는 ["a", "b", "c"]와 매핑돼있다. "a"를 누르기 타이핑 하기 위해서는 한 번, "b"를 누르기 위해서는 2번, "c"를 누르기 위해서는 세 번을 누르면 된다.키들은 수 제한없이 여러 문자로 매핑될 수 있지만, 각 문자는 정확히 하나의 키와 매핑돼야 한다. word를 타이핑 하기 위해 각 키를 remapping하고 눌러야 하는 최소 횟수를 구해라.(1, *, #, 0은 어떤 문자도 매핑할 수 없다)풀이 과정풀이 시..
PS/Programmers ·
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제1~n까지 서로 다른 번호가 매겨진 등대 n개가 존재한다.뱃길은 n-1개 존재하며, 어느 등대에서 출발해도 다른 모든 등대까지 이동할 수 있다.한 뱃길의 양쪽 끝 등대 중 적어도 하나는 켜져있도록 등대를 켜두어야 한다. - 2 ≤ n ≤ 100,000- lighthouse의 길이 = n – 1- lighthouse 배열의 각 행 [a, b]는 a번 등대와 b번 등대가 뱃길로 연결되어 있다는 의미- 1 ≤ a ≠ b ≤ n- 모든 등대는 서로 다른 등대로 이동할 수 있는 뱃길이 존재하도록 입력이 주어진다. 풀이 ..
PS/Programmers ·
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제자연수 x를 y로 변환하려고 한다. 사용할 수 있는 연산은 다음의 3개가 가능하다.- x에 n을 더한다.- x에 2를 곱한다.- x에 3을 곱한다.x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return, 만들 수 없다면 -1 return - 1 ≤ x ≤ 1,000,000- 1 ≤ n  풀이 과정풀이 시간: 15분알고리즘: BFSx와 y를 노드라고 생각한다면 시작 노드에서 도착 노드까지 가는 최단 거리(시간)를 구하는 문제이기 때문에 BFS로 풀이가 가능하다. O(y): 최악의 경우 y개의 모든 노드를 ..
PS/Programmers ·
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제왼손(4), 오른손(6)위에 두고 타이핑을 시작- 이동하지 않고, 제자리에서 다시 누르는 경우: 가중치 1- 상하좌우 인접한 숫자를 누르는 경우: 가중치 2- 대각선으로 인접한 숫자를 누르는 경우: 가중치 3- 같지 않고 인접하지 않은 숫자를 누를 때는 위 규칙에 따라 가중치 합이 최소가 되는 경로를 따른다. 1 ≤ numbers의 길이 ≤ 100,000- numbers는 아라비아 숫자로만 이루어진 문자열 풀이 과정풀이 시간: 2시간 이상 접근하다 포기하고 접근방법 참고알고리즘: DP + BFS1. 초기 설정-..
PS/Programmers ·
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제정수로 이루어진 배열 numbers모든 원소에 대해 뒷 큰수들을 차례대로 담은 배열을 return(단, 뒷 큰수가 존재하지 않는 원소는 -1을 담는다)- 4 ≤ numbers의 길이 ≤ 1,000,000    - 1 ≤ numbers[i] ≤ 1,000,000 풀이 과정풀이 시간: 25분알고리즘: 자료구조(스택) or 우선순위큐(힙)numbers의 길이가 최대 1,000,000이기 때문에 최악의 경우 O(NlogN)으로 풀이해야 한다. 1. stack을 이용해 O(N)으로 풀이할 경우맨 뒤의 수는 항상 뒷큰수를..
PS/Programmers ·
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제1억 x 1억 크기의 행렬이 주어진다.s보다 크거나 같고 e보다 작거나 같은 수 중에서 억억단에서 가장 많이 등장한 수를 답해야 한다.만약 가장 많이 등장한 수가 여러 개라면 그 중 가장 작은 수를 답해야 한다. - 1 ≤ e ≤ 5,000,000- 1 ≤ starts의 길이 ≤ min {e,100,000}- 1 ≤ starts의 원소 ≤ e- starts에는 중복되는 원소가 존재하지 않는다. 풀이 과정풀이 시간: 2시간 이상알고리즘: 수학, 누적합이 문제의 경우, e가 최대 5,000,000이기 때문에 시간복..
PS/Programmers ·
프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를 나타낸다. - 상, 하, 좌, 우로 연결되는 땅들은 하나의 무인도를 이룬다.- 지도의 각 칸에 적힌 숫자는 식량을 나타내는데, 상, 하, 좌, 우로 연결되는 칸에 적힌 숫자를 모두 합한 값은 해당 무인도에서 최대 며칠동안 머물 수 있는지를 나타낸다.지도를 나타내는 문자열 배열 maps가 매개변수로 주어질 때, 각 섬에서 최대 며..
'Python' 태그의 글 목록