본문 바로가기

Algorithm

(390)
[프로그래머스(Java)] 공백으로 구분하기 2 / 정규식 Level. 0 문제 단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요. * 제한사항 - my_string은 영소문자와 공백으로만 이루어져 있습니다. - 1 ≤ my_string의 길이 ≤ 1,000 - my_string의 맨 앞과 맨 뒤에도 공백이 있을 수 있습니다. - my_string에는 단어가 하나 이상 존재합니다. 풀이 class Solution { public String[] solution(String my_string) { String[] answer = my_string.trim().split(" +"); // + : 패..
[프로그래머스(Java)] x 사이의 개수 / split() Level. 0 문제 문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. * 제한사항 - 1 ≤ myString의 길이 ≤ 100,000 - myString은 알파벳 소문자로 이루어진 문자열입니다. 풀이 import java.util.ArrayList; import java.util.List; class Solution { public int[] solution(String myString) { String[] str = myString.split("x", -1); int[] answer = new int[str.length]; for(int i=0; i 0 ..
[프로그래머스] 시소 짝꿍 / gcd 최대공약수, lcm 최소공배수 Level. 2 문제 어느 공원 놀이터에는 시소가 하나 설치되어 있습니다. 이 시소는 중심으로부터 2(m), 3(m), 4(m) 거리의 지점에 좌석이 하나씩 있습니다. 이 시소를 두 명이 마주 보고 탄다고 할 때, 시소가 평형인 상태에서 각각에 의해 시소에 걸리는 토크의 크기가 서로 상쇄되어 완전한 균형을 이룰 수 있다면 그 두 사람을 시소 짝꿍이라고 합니다. 즉, 탑승한 사람의 무게와 시소 축과 좌석 간의 거리의 곱이 양쪽 다 같다면 시소 짝꿍이라고 할 수 있습니다. 사람들의 몸무게 목록 weights이 주어질 때, 시소 짝꿍이 몇 쌍 존재하는지 구하여 return 하도록 solution 함수를 완성해주세요. * 제한 사항 - 2 ≤ weights의 길이 ≤ 100,000 - 100 ≤ weights[..
[프로그래머스] 마법의 엘리베이터 Level. 2 문제 마법의 세계에 사는 민수는 아주 높은 탑에 살고 있습니다. 탑이 너무 높아서 걸어 다니기 힘든 민수는 마법의 엘리베이터를 만들었습니다. 마법의 엘리베이터의 버튼은 특별합니다. 마법의 엘리베이터에는 -1, +1, -10, +10, -100, +100 등과 같이 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수들이 적힌 버튼이 있습니다. 마법의 엘리베이터의 버튼을 누르면 현재 층 수에 버튼에 적혀 있는 값을 더한 층으로 이동하게 됩니다. 단, 엘리베이터가 위치해 있는 층과 버튼의 값을 더한 결과가 0보다 작으면 엘리베이터는 움직이지 않습니다. 민수의 세계에서는 0층이 가장 아래층이며 엘리베이터는 현재 민수가 있는 층에 있습니다. 마법의 엘리베이터를 움직이기 위해서 버튼 한 번당 마법의..
[프로그래머스(Java)] 콜라츠 수열 만들기 / Stream.iterate() Level. 0 문제 모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다. 그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 부릅니다. 계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한다는 것이 알려져 있습니다. 임의의 1,000 보다 작거나 같은 양의 정수 n이 주어질 때 초기값이 n인 콜라츠 수열을 return 하는 solution 함수를 완성해 주세요. * 제한사항 - 1 ≤ n ≤ 1,000 풀이 import java.util.List; import java.util.ArrayList; ..
[프로그래머스(Java)] 콜라츠 수열 만들기 / Stream.iterate() Level. 0 문제 모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다. 그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 부릅니다. 계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한다는 것이 알려져 있습니다. 임의의 1,000 보다 작거나 같은 양의 정수 n이 주어질 때 초기값이 n인 콜라츠 수열을 return 하는 solution 함수를 완성해 주세요. * 제한사항 - 1 ≤ n ≤ 1,000 풀이 import java.util.List; import java.util.ArrayList; ..
[프로그래머스(Java)] 꼬리 문자열 Level. 0 문제 문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다. 문자열 리스트 str_list와 제외하려는 문자열 ex가 주어질 때, str_list에서 ex를 포함한 문자열을 제외하고 만든 꼬리 문자열을 return하도록 solution 함수를 완성해주세요. * 제한사항 - 2 ≤ str_list의 길이 ≤ 10 - 1 ≤ str_list의 원소의 길이 ≤ 10 - 1 ≤ ex의 길이 ≤ 5 풀이1. cla..
[프로그래머스(Java)] 특별한 이차원 배열 2 / allMatch(), anyMatch() Level. 0 문제 n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요. - 0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i] * 제한사항 1 ≤ arr의 길이 = arr의 원소의 길이 ≤ 1001 ≤ arr의 원소의 원소 ≤ 1,000모든 arr의 원소의 길이는 같습니다. 풀이 class Solution { public int solution(int[][] arr) { int n = arr.length; for(int i=0; i arr[i][j] == arr[j][i]))?1:0; } } allMatch() 모든 요소들이 조건을 만족하는지 조사한 후 B..