[Programmers] #181849 - 문자열 정수의 합 [Java][C++][Python]
문제 링크 1. 아이디어 한 자리 정수로 이루어진 문자열 num_str에서 각 자릿수의 합을 반환하는 문제로 num_str의 각 문자를 순회하며 자릿수만 더하면 된다. 2. 복잡도 접근 시간 공간 풀이 $O(N)$ $O(1)$ ...
문제 링크 1. 아이디어 한 자리 정수로 이루어진 문자열 num_str에서 각 자릿수의 합을 반환하는 문제로 num_str의 각 문자를 순회하며 자릿수만 더하면 된다. 2. 복잡도 접근 시간 공간 풀이 $O(N)$ $O(1)$ ...
문제 링크 1. 아이디어 숫자로만 이루어진 문자열 n_str을 정수로 변환하는 문제로 내장 라이브러리를 활용하면 간단하게 해결할 수 있다. 2. 복잡도 접근 시간 공간 풀이 $O(N)$ $O(1)$ ($N$ =...
문제 링크 1. 아이디어 common은 등차수열 혹은 등비수열이므로 연속된 세 항에 대해 인접한 두 항의 차가 일정하면 등차수열, 아니면 등비수열로 조건 분기를 했다. 2. 복잡도 접근 시간 공간 풀이 $O(1)$ $O(1)$ ...
문제 링크 1. 아이디어 연속된 num개의 수의 합이 total이 될 때 원래 수열을 구하는 문제로 등차수열의 합 공식을 응용하면 해결할 수 있다. 등차수열의 초항을 $a$, 공차를 $d$라고 할 때, $total = \dfrac{(a + a + (num - 1) \times d) \times num}{2}$이고 연속된 정수라서 공차가 1이므...
문제 링크 1. 아이디어 종이 자르기를 최소 가위질로 하려면 가로로 먼저 쭉 자른 후 남은 종이를 자르거나, 세로로 쭉 자른 후 남은 종이를 자르면 된다. 가로의 길이를 M, 세로의 길이를 N이라고 하면, 가로로 먼저 쭉 자르면 N - 1번의 가위질이 필요하고 각 N개의 종이를 세로로 자르는데 N * (M - 1)번의 가위질이 필요하다. 세로...
문제 링크 1. 아이디어 문자열 A와 B가 주어지며 A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 구하는 문제다. 문자열 밀기는 각 문자를 오른쪽으로 한 칸 밀고 마지막 문자를 맨 앞으로 이동시키므로 A와 B가 동일한지 판단하고 동일하지 않다면 문자열 밀기를 하는 과정을 다시 초기 A로 돌아올 때까지 반복하면 된다. 2. 복잡...
문제 링크 1. 아이디어 애너그램 관계에 있는 문자열을 그룹핑해서 배열로 반환하는 문제로 해시맵을 활용하면 해결할 수 있다. 해시맵의 value에 애너그램 관계에 있는 문자열 그룹을, key에 해당 그룹의 문자열 중 하나를 사전순 정렬한 문자열로 두면 특정 문자열이 새로운 그룹을 만든다면 정렬 후 이를 key로 사용해 새로운 그룹을 저장하고,...
문제 링크 1. 아이디어 정수 배열 nums와 정수 k가 주어질 때, nums에서 가장 등장 빈도가 높은 k가지 원소를 구하는 문제다. 카운팅 맵을 활용해 각 원소와 등장 횟수를 기록한 후 등장 횟수를 기준으로 내림차순 정렬한 후 k개의 원소를 앞에서부터 순서대로 뽑으면 간단하게 해결할 수 있다. Follow up은 $O(N \log N)$...
문제 링크 1. 아이디어 정수 배열 arr에 대해 arr의 길이가 2의 정수 거듭제곱이 되도록 뒤에 0을 최소 개수로 추가만 하면 되는 간단한 문제다. 2. 복잡도 접근 시간 공간 풀이 $O(N)$ $O(N)$ ...
문제 링크 1. 아이디어 정수로 이루어진 리스트 num_list를 오름차순으로 정렬한 후 앞에서부터 5개를 취하면 된다. 2. 복잡도 접근 시간 공간 풀이 $O(N \log N)$ $O(1)$ ($N$ = nu...