본문 바로가기

Algorithm/Programers - Java

(160)
[프로그래머스(Java)] 붕대 감기 Level. 1 문제 어떤 게임에는 붕대 감기라는 기술이 있습니다. 붕대 감기는 t초 동안 붕대를 감으면서 1초마다 x만큼의 체력을 회복합니다. t초 연속으로 붕대를 감는 데 성공한다면 y만큼의 체력을 추가로 회복합니다. 게임 캐릭터에는 최대 체력이 존재해 현재 체력이 최대 체력보다 커지는 것은 불가능합니다. 기술을 쓰는 도중 몬스터에게 공격을 당하면 기술이 취소되고, 공격을 당하는 순간에는 체력을 회복할 수 없습니다. 몬스터에게 공격당해 기술이 취소당하거나 기술이 끝나면 그 즉시 붕대 감기를 다시 사용하며, 연속 성공 시간이 0으로 초기화됩니다. 몬스터의 공격을 받으면 정해진 피해량만큼 현재 체력이 줄어듭니다. 이때, 현재 체력이 0 이하가 되면 캐릭터가 죽으며 더 이상 체력을 회복할 수 없습니다. 당..
[프로그래머스(Java)] 접미사인지 확인하기 / endsWith(), startsWith() Level. 0 문제 어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다. 문자열 my_string과 is_suffix가 주어질 때, is_suffix가 my_string의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요. * 제한사항 - 1 ≤ my_string의 길이 ≤ 100 - 1 ≤ is_suffix의 길이 ≤ 100 - my_string과 is_suffix는 영소문자로만 이루어져 있습니다. 풀이1 class Solution { public int solution(String my_string, String..
[프로그래머스(Java)] 첫 번째로 나오는 음수 / findFirst(), orElse() Level. 0 문제 정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다. 제한사항 5 ≤ num_list의 길이 ≤ 100-10 ≤ num_list의 원소 ≤ 100 풀이 import java.util.stream.*; class Solution { public int solution(int[] num_list) { return IntStream.range(0, num_list.length).filter( i-> num_list[i] < 0).findFirst().orElse(-1); } } https://school.programmers.co.kr/learn/courses/30/le..
[프로그래머스(Java)] 뒤에서 5등 위로 / skip Level. 0 문제 정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요. * 제한사항 - 6 ≤ num_list의 길이 ≤ 30 - 1 ≤ num_list의 원소 ≤ 100 풀이1 import java.util.Arrays; class Solution { public int[] solution(int[] num_list) { int[] answer = new int[num_list.length-5]; Arrays.sort(num_list); for(int i=5; i
[프로그래머스(Java)] 카운트 다운 / rangeClosed(), iterate() Level. 0 문제 정수 start_num와 end_num가 주어질 때, start_num에서 end_num까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. * 제한사항 - 0 ≤ end_num ≤ start_num ≤ 50 풀이. 1 - iterate import java.util.stream.*; class Solution { public int[] solution(int start, int end_num) { return IntStream.iterate(start, i-> i>=end_num, i-> i-1).toArray(); } } 풀이. 2 - rangeClosed import java.util.stream.*; class Solution..
[프로그래머스(Java)] 배열 비교하기 / Integer.compare Level.0 문제 이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다. 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다. 배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다. 두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요. * 제한사항 - 1 ≤ arr1의 길이 ≤ 100 - 1 ≤ arr2의 길이 ≤ 100 - 1 ≤ arr1의 원소 ≤ 100 - 1 ≤ arr2의 원소 ≤ 100 - 문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 ..
[프로그래머스(Java)] 글자 이어 붙여 문자열 만들기 / StringBuilder Level. 0 문제 문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. * 제한사항 - 1 ≤ my_string의 길이 ≤ 1,000 - my_string의 원소는 영소문자로 이루어져 있습니다. - 1 ≤ index_list의 길이 ≤ 1,000 - 0 ≤ index_list의 원소 < my_string의 길이 풀이1. StringBuilder class Solution { public String solution(String my_string, int[] index_list) { StringBuilder sb ..
[프로그래머스(Java)] 순서 바꾸기 Level. 0 문제 정수 리스트 num_list와 정수 n이 주어질 때, num_list를 n 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요. * 제한사항 - 2 ≤ num_list의 길이 ≤ 30 - 1 ≤ num_list의 원소 ≤ 9 - 1 ≤ n ≤ num_list의 길이 풀이 1. class Solution { public int[] solution(int[] num_list, int n) { int len = num_list.length; int[] answer = new int[len]; for(int i=0; i num_list[(n+i)%num_list...