본문 바로가기

Algorithm

(402)
[프로그래머스] k진수에서 소수 개수 구하기 Level. 2 문제 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. - 0P0처럼 소수 양쪽에 0이 있는 경우 - P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 - 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 - P처럼 소수 양쪽에 아무것도 없는 경우 - 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, 11을 k진법으..
[프로그래머스] 할인 행사 / 슬라이딩 윈도우 알고리즘 Level. 2 문제 XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다. 예를 들어, 정현이가 원하는 제품이 바나나 3개, 사과 2개, 쌀 2개, 돼지고기 2개, 냄비 1개이며, XYZ 마트에서 15일간 회원을 대상으로 할인하는 제품이 날짜 순서대로 치킨, 사과, 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나, 사과, 바나나인 경우에 대해 알아봅시다. 첫째 날부터 열흘 간에는 냄비가 할인하지 않기..
[프로그래머스] 괄호 회전하기 Level. 2 문제 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. - (), [], {} 는 모두 올바른 괄호 문자열입니다. - 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. - 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의..
[프로그래머스(Java)] 외계어 사전 Level. 0 문제 PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요. * 제한사항 - spell과 dic의 원소는 알파벳 소문자로만 이루어져있습니다. - 2 ≤ spell의 크기 ≤ 10 - spell의 원소의 길이는 1입니다. - 1 ≤ dic의 크기 ≤ 10 - 1 ≤ dic의 원소의 길이 ≤ 10 - spell의 원소를 모두 사용해 단어를 만들어야 합니다. - spell의 원소를 모두 사용해 만들 수 있는 단어는 ..
[프로그래머스(Java)] 정사각형으로 만들기 / System.arraycopy() Level. 0 문제 이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. * 제한사항 - 1 ≤ arr의 길이 ≤ 100 - 1 ≤ arr의 원소의 길이 ≤ 100 arr의 모든 원소의 길이는 같습니다. - 1 ≤ arr의 원소의 원소 ≤ 1,000 풀이 class Solution { public int[][] solution(int[][] arr) { int max = Math.max(arr.length,arr[0].length); int[][] answer = ..
[프로그래머스] 연속 부분 수열 합의 개수 / accumulate() Level. 2 문제 철호는 수열을 가지고 놀기 좋아합니다. 어느 날 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다. 예를 들어 수열 [7, 9, 1, 1, 4] 로 원형 수열을 만들면 다음과 같습니다. 원형 수열은 처음과 끝이 연결되어 끊기는 부분이 없기 때문에 연속하는 부분 수열도 일반적인 수열보다 많아집니다. 원형 수열의 모든 원소 elements가 순서대로 주어질 때, 원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를 return 하도록 solution 함수를 완성해주세요. * 제한사항 - 3 ≤ elements의 길이 ≤ 1..
[프로그래머스(Java)] 무작위로 K개의 수 뽑기 / ArrayList.contains(), Stream concat(), limit(), distinct() Level. 0 문제 랜덤으로 서로 다른 k개의 수를 저장한 배열을 만드려고 합니다. 적절한 방법이 떠오르지 않기 때문에 일정한 범위 내에서 무작위로 수를 뽑은 후, 지금까지 나온 적이 없는 수이면 배열 맨 뒤에 추가하는 방식으로 만들기로 합니다. 이미 어떤 수가 무작위로 주어질지 알고 있다고 가정하고, 실제 만들어질 길이 k의 배열을 예상해봅시다. 정수 배열 arr가 주어집니다. 문제에서의 무작위의 수는 arr에 저장된 순서대로 주어질 예정이라고 했을 때, 완성될 배열을 return 하는 solution 함수를 완성해 주세요. 단, 완성될 배열의 길이가 k보다 작으면 나머지 값을 전부 -1로 채워서 return 합니다. * 제한사항 - 1 ≤ arr의 길이 ≤ 100,000 - 0 ≤ arr의 원소 ≤..
[프로그래머스(Java)] 수열과 구간 쿼리 2 / Arrays.fill() Level. 0 문제 정수 배열 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 < arr의 길이 0 ≤ k ≤ 1,000,000 풀이 import java.util.*; class Solutio..