본문 바로가기

Algorithm

(402)
[프로그래머스(Java)] 숨어있는 숫자의 덧셈 (1) / Character.isDigit() Level. 0 문제 문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요. * 제한사항 - 1 ≤ my_string의 길이 ≤ 1,000 - my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다. 풀이.1 import java.util.stream.*; import java.util.Arrays; class Solution { public int solution(String my_string) { String str = my_string.replaceAll("[a-zA-z]",""); return Arrays.stream(str.split("")).mapToInt(value -> Inte..
[프로그래머스(Java)] 문자열 곱하기 / String.repeat(), Collections.nCopies() Level.0 문제 문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요. * 제한사항 - 1 ≤ my_string의 길이 ≤ 100 - my_string은 영소문자로만 이루어져 있습니다. - 1 ≤ k ≤ 100 풀이. 1 - repeat() import java.util.*; class Solution { public String solution(String my_string, int k) { return my_string.repeat(k); } } String.repeat(n) 문자열을 n번 반복한 새 문자열을 반환한다. 풀이. 2 - Collections.nCopies() import java.util.s..
[프로그래머스(Java)] 더 크게 합치기 Level. 0 문제 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. - 12 ⊕ 3 = 123 - 3 ⊕ 12 = 312 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다. * 제한사항 - 1 ≤ a, b < 10,000 풀이.1 class Solution { public int solution(int a, int b) { int num1 = Integer.parseInt(Integer.toString(a) + Integer.toString(b)); int num2 = Integer.parseInt..
[프로그래머스(Java)] 정수 찾기 / anyMatch() Level.0 문제 정수 리스트 num_list와 찾으려는 정수 n이 주어질 때, num_list안에 n이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요. * 제한사항 - 3 ≤ num_list의 길이 ≤ 100 - 1 ≤ num_list의 원소 ≤ 100 - 1 ≤ n ≤ 100 풀이.1 - Arrays.asList() import java.util.Arrays; class Solution { public int solution(int[] num_list, int n) { return Arrays.asList(num_list).contains(num)?1:0; } } 풀이.2 - Stream import java.util.stream.*; class Solution { ..
[프로그래머스(Java)] n 번째 원소부터 / Arrays.copyOfRange() Level. 0 문제 정수 리스트 num_list와 정수 n이 주어질 때, n 번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요. * 제한사항 - 2 ≤ num_list의 길이 ≤ 30 - 1 ≤ num_list의 원소 ≤ 9 - 1 ≤ n ≤ num_list의 길이 풀이.1 - Stream import java.util.stream.*; class Solution { public int[] solution(int[] num_list, int n) { return IntStream.range(n-1, num_list.length).map(i -> num_list[i]).toArray(); } } 풀이.2 - Arrays.copyOfRange(..
[프로그래머스(Java)] 수 조작하기 1 Level. 0 문제 정수 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"로 이루어진 문자열입니다. 풀이1. class Solution { ..
[프로그래머스(Java)] 가장 많이 받은 선물 Level. 1 문제 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. - 두 사람이 선물을 주고받은 기록이 있다면, 이번 달까지 두 사람 사이에 더 많은 선물을 준 사람이 다음 달에 선물을 하나 받습니다. 예를 들어 A가 B에게 선물을 5번 줬고, B가 A에게 선물을 3번 줬다면 다음 달엔 A가 B에게 선물을 하나 받습니다. - 두 사람이 선물을 주고받은 기록이 하나도 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 선물을 하나 받습니다. 선물 지수는 이번 달까지 자신이 친구들에게 준 선물의 수에서 받은 선..
[프로그래머스(Java)] 붕대 감기 Level. 1 문제 어떤 게임에는 붕대 감기라는 기술이 있습니다. 붕대 감기는 t초 동안 붕대를 감으면서 1초마다 x만큼의 체력을 회복합니다. t초 연속으로 붕대를 감는 데 성공한다면 y만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가능합니다. 기술을 쓰는 도중 몬스터에게 공격을 당하면 기술이 취소되고, 공격을 당하는 순간에는 체력을 회복할 수 없습니다. 몬스터에게 공격당해 기술이 취소당하거나 기술이 끝나면 그 즉시 붕대 감기를 다시 사용하며, 연속 성공 시간이 0으로 초기화됩니다. 몬스터의 공격을 받으면 정해진 피해량만큼 현재 체력이 줄어듭니다. 이때, 현재 체력이 0 이하가 되면 캐릭터가 죽으며 더 이상 체력을 회복할 수 없습니다. 당..