프로그래머스 16

[ 프로그래머스 ] 신고 결과 받기 - java

📘요구 사항 정리신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다.무지가 개발하려는 시스템은 다음과 같습니다.각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2(즉,..

코딩테스트 2025.03.20

[ 프로그래머스 ] 의상

📘요구 사항 정리코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다.예를 들어 코니가 가진 옷이 아래와 같고,오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다.코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다.착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다. 📌 제약 조건clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.코니가 가진 의상의 수는 1개 이상 30개 이하입니다.같은 이름..

코딩테스트 2025.03.20

[ 프로그래머스 ] 카드 뭉치

📘요구 사항 정리코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다.코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다.한 번 사용한 카드는 다시 사용할 수 없습니다.카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다.기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다.예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"],두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면첫 번째 카드 뭉치에서 "i"를 사용한 후 두 ..

코딩테스트 2025.02.25

[ 프로그래머스 ] 기능 개발

📌요구 사항 정리프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다.각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.뒤에 있는 기능이 먼저 개발되더라도, 앞에 있는 기능이 개발되지 않으면 배포 불가능뒤에 있는 기능이 먼저 개발되면, 앞에 있는 기능이 배포될때 함께 배포된다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.📌 제약 ..

코딩테스트 2025.02.25

[ 프로그래머스 ] 크레인 인형 뽑기 게임

📘요구 사항 정리게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다).각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다.모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다.게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다.집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다.다음 그림은 [1번, 5번, 3번] 위치에서 순서대로 인형을 집어 올려 바구니에 담은 모습입니다.만약 같은 모양의 인형 두..

코딩테스트 2025.02.18

[ 프로그래머스 ] 같은 숫자는 싫어

📘요구 사항 정리배열 arr가 주어집니다.배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다.이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다.단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 📌 제약 조건배열 arr의 크기 : 1,000,000 이하의 자연수배열 arr의 원소의 크기 : 0보다 크거나 ..

코딩테스트 2025.02.18

[ 프로그래머스 ] 컨트롤 제트

📘요구 사항 정리숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다.문자열에 있는 숫자를 차례대로 더하려고 합니다.이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다.숫자와 "Z"로 이루어진 문자열 s가 주어질 때,머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요. 📌 제약 조건1 ≤ s의 길이 ≤ 2001,000 s는 숫자, "Z", 공백으로 이루어져 있습니다.s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.연속된 공백은 주어지지 않습니다.0을 제외하고는 0으로 시작하는 숫자는 없습니다.s는 "Z"로 시작하지 않습니다.s의 시작과 끝에는 공백이 없습니다."Z"가 연속해서 나오는 경우는 없습니다. 📌 구현코드  - 1 package pra.lv0.컨트..

코딩테스트 2025.02.18

[ 프로그래머스 ] 주식 가격

📘요구 사항 정리초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 📌 제약 조건s의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices의 길이는 2 이상 100,000 이하입니다. 📌 문제 분석배열의 index가 초 시점인 것 같다.문제 해석은 다음과 같다.배열 0의 값이 1달러 일때, 배열 1의 값은 2이기 때문에 가격이 떨어지지 않았다.배열 1의 값이 2달러 일때, 배열 3의 값은 3이기 때문에 가격이 떨어지지 않았다.배열 3의 값이 3달러 일대, 배열 4의 값은 2이기 때문에 1초간 가격이 떨어지지 않았다.배열 1의 값 1달러는 1,2,3,4 초간 맨 마지막 까지..

코딩테스트 2025.02.13

[ 프로그래머스 ] 괄호 회전하기

📘요구 사항 정리(), [], {} 는 모두 올바른 괄호 문자열입니다.만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다.예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다.만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다.예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 📌 제약 조건s의 길이는 1 이상 1,000 이하입니다. 📌 구현코드package pra.lv2.괄호회전하기;import java.util.Stack;public class answer_1 { public static void main(String[] args) { ..

코딩테스트 2025.02.13

[ 프로그래머스 ] 짝지어 제거하기

📘요구 사항 정리짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작한다.먼저 문자열에서 같은 알파벳이 2개 붙어있는 짝을 찾는다.그 다음 그 둘(알파벳 2개 붙어있는 짝) 을 제거한뒤, 앞 뒤로 문자열을 다시 이어 붙인다.이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료된다.성공적으로 수행시 1 반환실패 시 0 번환 📌 제약 조건문자열의 길이 : 1,000,000이하의 자연수문자열은 모두 소문자로 이루어져 있습니다. 📌 구현코드 -1 package pra.lv2.짝지어제거하기;import java.util.Stack;public class answer_1 { public static void main(String[] args) { int result..

코딩테스트 2025.02.13