본문 바로가기

알고리즘13

프로그래머스 / 코딩 기초 트레이닝 / 수 조작하기 2 수 조작하기 2 문제 설명 정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다. "w" : 수에 1을 더한다. "s" : 수에 1을 뺀다. "d" : 수에 10을 더한다. "a" : 수에 10을 뺀다. 그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다. 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요. 제한사항 2 ≤ numLog의 길이 ≤ 100,000 -100,000 .. 2023. 9. 18.
프로그래머스 / 코딩 기초 트레이닝 / 수열과 구간 쿼리 2 수열과 구간 쿼리 2 문제 설명 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다. 제한사항 1 ≤ arr의 길이 ≤ 1,000 0 ≤ arr의 원소 ≤ 1,000,000 1 ≤ queries의 길이 ≤ 1,000 0 ≤ s ≤ e 2023. 9. 18.
프로그래머스 / 코딩 기초 트레이닝 / 수 조작하기 1 수 조작하기 1 문제 설명 정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다. "w" : n이 1 커집니다. "s" : n이 1 작아집니다. "d" : n이 10 커집니다. "a" : n이 10 작아집니다. 위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요. 제한사항 -100,000 ≤ n ≤ 100,000 1 ≤ control의 길이 ≤ 100,000 control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다. [내가 푼 방식] 단순하게 split으로 문자열 .. 2023. 9. 18.
프로그래머스 / 코딩 기초 트레이닝 / 등차수열에 특정한 항만 더하기 등차수열에 특정한 항만 더하기 문제 설명 두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ a ≤ 100 1 ≤ d ≤ 100 1 ≤ included의 길이 ≤ 100 included에는 true가 적어도 하나 존재합니다. [ 내가 푼 방식 ] 단순하게 반복문으로 작성했다. idx대로 순차적으로 돌면서 해당 하는 항일 때만 합산하는 방식으로 코드를 짰다. 규칙성 찾기 include.length === n include[i] === i .. 2023. 9. 17.
프로그래머스 / 코딩 기초 트레이닝 / 홀짝에 따라 다른 값 반환하기 홀짝에 따라 다른 값 반환하기 문제 설명 양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ n ≤ 100 [ 내가 푼 방식 ] 사실 홀수의 합은 공식을 모르는 상태에서 직접 규칙성을 발견해 코드를 작성했다. check point! n이하의 홀수들의 합에 대해 내가 찾은 규칙 n이하의 홀수들의 갯수 = n /2 + 1 홀수들의 합 = 홀수들의 갯수의 제곱 짝수도 동일한 방법으로 규칙을 찾아보려고 했지만 실패했다. 그래서 짝수들의 제곱의 합은 반복문으로 작성했다. 그런데 반복문으로 작성하니까 확실히 처리 속도가 .. 2023. 9. 17.
프로그래머스 / 코딩 기초 트레이닝 / 공배수 공배수 문제 설명 정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요. 제한사항 10 ≤ number ≤ 100 2 ≤ n, m 2023. 9. 16.
프로그래머스 / 코딩 기초 트레이닝 / n의 배수 n의 배수 문제 설명 정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return하고 n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num ≤ 100 2 ≤ n ≤ 9 [ 내가 푼 방식 ] 2023. 9. 16.
프로그래머스 / 코딩 기초 트레이닝 / 덧셈식 출력하기 덧셈식 출력하기 문제 설명 두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요. a + b = c 제한사항 1 ≤ a, b ≤ 100 [ 내가 푼 방식 ] 문자와 숫자가 ""와 +로 이어지는 혼돈의 카오스 같은 코드.. 가독성이 상당히 떨어진다. 그리고 처리 속도도 느리다. [다른 사람들이 푼 방식 ] 미리 문자를 숫자로 바꾸는 과정을 처리한 후 연산을 하는 방식으로 진행 했더니 속도가 빨라졌다. [ 다시 풀어본 방식 ] 다른 사람들이 푼 방식을 보고 다시 내가 짠 코드를 수정해보았다. 다시 풀어본 방식이 기존에 내가 풀었던 방식보다는 속도가 빠르지만 역시 Number()를 남발해서인지 다른 사람들이 푼 방식보다는 느리다. 배열의 값에 접근하고 그 값을 전부 Nuim.. 2023. 9. 15.
프로그래머스 / 코딩 기초 트레이닝 / 더 크게 합치기 더 크게 합치기 문제 설명 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 12 ⊕ 3 = 123 3 ⊕ 12 = 312 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다. 제한사항 1 ≤ a, b 2023. 9. 15.