본문 바로가기

Algorithm/Programers - Java

(160)
[프로그래머스(Java)] 커피 심부름 Level. 0 문제 팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다. 각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다. order의 원소 의미 "iceamericano", "americanoice" 차가운 아메리카노 ..
[프로그래머스(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는 자신보다 ..
[프로그래머스(Java)] 문자열 나누기 Level. 1 문제 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. - 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. - 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다.처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. - s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. - 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solu..
[프로그래머스(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 ..
[프로그래머스(Java)] 문자열 묶기 / Stream, groupingBy(), orElse(), orElseGet() Level. 0 문제 문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요. * 제한사항 - 1 ≤ strArr의 길이 ≤ 100,000 - 1 ≤ strArr의 원소의 길이 ≤ 30 - strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다. 풀이 class Solution { public int solution(String[] strArr) { int answer = 0; int[] counts = new int[31]; for(int i=0; i
[프로그래머스(Java)] 푸드 파이트 대회 Level. 1 문제 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, ..