[Programmers] #181884 - n보다 커질 때까지 더하기 [Java][C++][Python]
문제 링크 1. 아이디어 배열을 앞에서부터 순회하며 누적합을 갱신하고, 누적합이 n을 처음으로 초과하는 순간 그 값을 반환하면 된다. n이 전체 원소의 합보다 작다고 보장되므로 순회가 끝나기 전에 반드시 조건을 만족하는 시점이 나온다. 2. 복잡도 접근 시간 공간 ...
문제 링크 1. 아이디어 배열을 앞에서부터 순회하며 누적합을 갱신하고, 누적합이 n을 처음으로 초과하는 순간 그 값을 반환하면 된다. n이 전체 원소의 합보다 작다고 보장되므로 순회가 끝나기 전에 반드시 조건을 만족하는 시점이 나온다. 2. 복잡도 접근 시간 공간 ...
문제 링크 1. 아이디어 각 쿼리 [s, e]는 arr[s]부터 arr[e]까지 모든 원소를 1씩 증가시킨다. 쿼리마다 구간을 직접 순회하며 더해도 배열 길이와 쿼리 수가 모두 최대 $1{,}000$이라 $10^6$ 정도의 연산으로 통과한다. 구간이 더 길거나 쿼리가 많은 경우까지 생각하면, 겹치는 구간에서 같은 칸을 반복해 갱신하는 게 낭...
문제 링크 1. 아이디어 정수 배열 arr을 순회하며 원소의 값이 50보다 크거나 같은 짝수인지, 50보다 작은 홀수인지로 분기 처리하며 쭉 갱신하면 된다. 2. 복잡도 접근 시간 공간 풀이 $O(N)$ $O(1)$ ...
문제 링크 1. 아이디어 주어진 연산을 배열 전체에 한 번 적용하는 것을 한 단계로 보고, 배열이 더 이상 변하지 않을 때까지 시뮬레이션하며 단계 수를 세면 된다. 유한 횟수 내에 종료됨을 문제에서 보장하므로 무한 루프를 활용해 반복하다가 변하지 않는 순간 탈출했다. 2. 복잡도 접근 시간 ...
문제 링크 1. 아이디어 홀수 x에서 1을 뺀 뒤 2로 나누는 연산은 정수 나눗셈 $\lfloor x / 2 \rfloor$와 결과가 같다. 짝수는 그냥 2로 나누므로, 결국 홀수·짝수를 구분할 필요 없이 각 원소를 1이 될 때까지 2로 나누며 횟수를 세고 모두 합하면 된다. 2. 복잡도 접근 시간...
문제 링크 1. 아이디어 num_list의 길이가 11 이상이면 전체 원소의 합을, 10 이하이면 전체 원소의 곱을 계산해 반환하면 된다. 원소를 모두 곱해도 32비트 정수 범위(2,147,483,647)를 넘지 않음이 보장되므로 오버플로우는 고려하지 않아도 된다. 2. 복잡도 접근 시간 ...
문제 링크 1. 아이디어 알파벳 대소문자를 구분하지 않으므로 myString과 pat을 모두 소문자로 바꾼 뒤, pat이 myString의 연속된 부분 문자열로 존재하는지 판정하면 된다. 2. 복잡도 접근 시간 공간 풀이 $O(N \tim...
문제 링크 1. 아이디어 각 수식 문자열은 X [연산자] Y = Z 꼴이고 토큰 사이가 공백으로 구분되므로, 공백 기준으로 잘라 두 피연산자와 연산자, 우변 값을 분리했다. 연산자가 +면 두 피연산자의 합을, -면 차를 구해 우변 값과 같은지 확인하고, 같으면 O, 다르면 X를 순서대로 담아 반환하면 된다. 2. 복잡도 ...
문제 링크 1. 아이디어 정수 n의 각 자리 숫자를 모두 더하면 되는 문제다. n을 10으로 나눈 나머지로 마지막 자리 숫자를 얻고, n을 10으로 나눈 몫을 취하는 과정을 n이 0이 될 때까지 반복하여 더하면 된다. 2. 복잡도 접근 시간 공간 풀...
문제 링크 1. 아이디어 정수 n과 정수 배열 numlist가 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 반환하는 문제로 numlist를 순회하며 n으로 나눈 나머지가 0인 원소만 순서대로 모아 반환하면 된다. 2. 복잡도 접근 시간 공간 ...