Algorithm (402) 썸네일형 리스트형 [프로그래머스(Java)] 조건에 맞게 수열 변환하기 2 / clone, equals Level. 0 문제 정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다. * 제한사항 - 1 ≤ arr의 길이 ≤ 1,000,000 - 1 ≤ arr의 원소의 값 ≤ 100 풀이 import java.util.*; class Solution { public int .. [프로그래머스(Java)] 7의 개수 / Stream, mapToObj, Collectors.joining() Level. 0 문제 머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요. * 제한사항 - 1 ≤ array의 길이 ≤ 100 - 0 ≤ array의 원소 ≤ 100,000 풀이 import java.util.*; class Solution { public int solution(int[] array) { int answer = 0; String str = ""; for(int i=0; ic=='7').count(); return answer; } } Java의 기본 문자 어레이를 chars()를 통해 스트림으로 변환하고, filter()를 통해 원하는 자료만 필터링한 후 count()를.. [프로그래머스(Java)] 가장 가까운 같은 글자 / map.getOrDefault() Level. 1 문제 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. - b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. - 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. - 이는 -1로 표현합니다.n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. - 이는 -1로 표현합니다.a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. - n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. - a는 자신보다 .. [프로그래머스] 배달 / 다익스트라 알고리즘 Level. 2 문제 N개의 마을로 이루어진 나라가 있습니다. 이 나라의 각 마을에는 1부터 N까지의 번호가 각각 하나씩 부여되어 있습니다. 각 마을은 양방향으로 통행할 수 있는 도로로 연결되어 있는데, 서로 다른 마을 간에 이동할 때는 이 도로를 지나야 합니다. 도로를 지날 때 걸리는 시간은 도로별로 다릅니다. 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시간 이하로 배달이 가능한 마을에서만 주문을 받으려고 합니다. 다음은 N = 5, K = 3인 경우의 예시입니다. 위 그림에서 1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지는 3 이하의 시간에 배달할 수 있습니다. 그러나 3번 마을까지는 3.. [프로그래머스(Java)] 문자열 나누기 Level. 1 문제 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. - 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. - 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다.처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. - s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. - 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solu.. [프로그래머스] N개의 최소공배수 / 유클리드 호제법 Level. 2 문제 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. * 제한 사항 - arr은 길이 1이상, 15이하인 배열입니다. - arr의 원소는 100 이하인 자연수입니다. 풀이 #include #include using namespace std; /* GCD = 최대공약수 LCM = 최소공배수 */ int gcd(int n, int m){.. [프로그래머스] 개인정보 수집 유효기간 / substr Level. 1 문제 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 다음은 오늘 날짜가 2022.0.. [프로그래머스(Java)] 2의 영역 / rangeClosed Level. 0 문제 정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요. 단, arr에 2가 없는 경우 [-1]을 return 합니다. * 제한사항 - 1 ≤ arr의 길이 ≤ 100,000 - 1 ≤ arr의 원소 ≤ 10 풀이 import java.util.Arrays; class Solution { public int[] solution(int[] arr) { int[] answer ; int start = 100000; int end = 0; for(int i=0; i=0; i--){ if(arr[i] == 2){ end = i; break; } } if(start == 100000) { answer .. 이전 1 ··· 28 29 30 31 32 33 34 ··· 51 다음