본문 바로가기

728x90

프로그래머스(Java)

(192)
[프로그래머스] 할인 행사 반복문을 이용한 구간 설정: discount 배열에서 연속된 10개의 요소를 차례대로 검사합니다조건을 만족하는지 확인: 각 구간에서는 want 배열에 포함된 상품을 찾아서 number 배열의 해당 상품 재고를 감소시킵니다. 그리고 남은 재고가 모두 0 이하인지 확인합니다.조건을 만족할 때 결과를 증가: 남은 재고가 모두 0 이하인 경우에만 결과 값을 증가시킵니다.최종 결과 반환: 모든 구간에 대해 조건을 만족하는 횟수를 최종 결과로 반환합니다. 정답은 더보기 클릭더보기import java.util.Arrays;class Solution { public int solution(String[] want, int[] number, String[] discount) { int result = ..
[프로그래머스] 괄호 회전하기 코드 힌트문자열 회전: 문자열을 회전시켜 모든 가능한 상태를 검사해야 합니다. 저는 이를 위해 substring 메서드를 사용했습니다. StringBuilder등 다양한 방법으로 회전시켜도 상관 없습니다스택을 이용한 괄호 매칭: 스택을 이용해 괄호의 짝을 맞춥니다. 열린 괄호가 스택에 쌓이고, 닫힌 괄호가 들어올 때 스택의 꼭대기와 짝이 맞으면 스택에서 제거합니다.올바른 괄호 문자열 판별: 모든 문자를 검사한 후 스택이 비어있다면, 해당 문자열은 올바른 괄호 문자열입니다.  정답은 더보기 클릭더보기더보기import java.util.Stack;class Solution { public int solution(String s) { int result = 0; /..
[프로그래머스] N개의 최소공배수 코드 힌트최대공약수(GCD) 계산: gcd 메소드는 두 숫자 n과 m의 최대공약수를 계산합니다. 유클리드 호제법을 사용하여 효율적으로 계산합니다. 이 방법은 n % m의 나머지가 0이 될 때까지 반복하여 두 숫자의 최대공약수를 찾습니다.최소공배수(LCM) 계산: lcm 메소드는 두 숫자 n과 m의 최소공배수를 계산합니다. 최소공배수는 두 숫자의 곱을 그들의 최대공약수로 나누어 계산됩니다.n * m / 최대공약수(gcd)배열의 최소공배수 계산: 배열의 모든 요소에 대해 최소공배수를 차례로 계산합니다. 초기값으로 배열의 첫 번째 요소를 설정하고, 나머지 요소들과의 최소공배수를 순차적으로 계산합니다. 정답은 더보기 클릭더보기더보기더보기더보기class Solution { public int solution..
[프로그래머스] 영어 끝말잇기 사용한 단어 추적하기:게임에서 이미 사용된 단어를 추적하기 위해 리스트나 Set을 사용할 수 있습니다.각 단어가 사용될 때마다 리스트에 추가하여 중복을 체크합니다. 단어 연결 규칙 확인:각 단어의 마지막 글자와 다음 단어의 첫 글자가 일치하는지 확인해야 합니다.이때, 전 단어의 마지막 글자와 현재 단어의 첫 글자를 비교하여 규칙이 지켜졌는지 확인합니다. 차례와 번호 계산:몇 번째 사람이 규칙을 어겼는지, 몇 번째 차례인지 계산해야 합니다.이 정보를 바탕으로 [사람 번호, 차례] 형식의 배열을 반환합니다.이를 위해 인덱스를 플레이어 수(n)로 나눈 나머지와 몫을 활용할 수 있습니다. 예외 처리:게임이 규칙에 맞게 끝난 경우, [0, 0]을 반환합니다.모든 단어가 규칙을 지켰는지 검사한 후 적절히 반환 값을..
[프로그래머스] 카펫 풀이 힌트문제 이해갈색 타일은 카펫의 테두리를 구성하고, 노란색 타일은 그 내부를 채웁니다.전체 타일 수는 갈색 타일과 노란색 타일의 합입니다.전체 넓이 계산전체 타일 수는 brown + yellow입니다.이 값을 기준으로 카펫의 가로(w)와 세로(h)를 찾아야 합니다.가로와 세로 길이의 조건카펫의 높이는 최소 3이어야 합니다. 이는 갈색 타일로 테두리를 두르기 위해 필요합니다.h가 3부터 시작하여 하나씩 증가시키면서 전체 넓이(area)를 h로 나누어 떨어지는지 확인합니다. 이때 나누어 떨어지면 해당 값을 w로 설정합니다.조건 검사계산한 w와 h가 테두리를 제외한 내부 노란색 타일의 넓이를 만족하는지 확인합니다.즉, (w - 2) * (h - 2)가 yellow와 같은지 확인합니다.조건을 만족하면 해당..
[프로그래머스] 올바른 괄호 문제 풀이 힌트문제 이해:주어진 문자열 s가 올바른 괄호 문자열인지 확인하는 문제입니다.올바른 괄호 문자열이란 모든 괄호가 짝을 이루고, 올바른 순서로 배치된 문자열을 의미합니다.자료구조 선택:이 문제에서는 스택(Stack)을 사용하여 괄호의 짝을 맞추는 작업을 효율적으로 처리할 수 있습니다.스택은 LIFO(Last In First Out) 자료구조로, 가장 최근에 삽입된 원소가 가장 먼저 제거됩니다.알고리즘:문자열의 각 문자를 순회하면서 스택을 사용하여 괄호를 처리합니다.여는 괄호 '('는 스택에 넣고, 닫는 괄호 ')'는 스택의 최상단이 여는 괄호 '('인지 확인하여 짝이 맞으면 스택에서 제거합니다.문자열을 모두 순회한 후 스택이 비어 있으면 모든 괄호가 짝을 이룬 것이고, 비어 있지 않으면 짝이 맞..
[프로그래머스] 최댓값과 최솟값 Java로 문자열에서 최솟값과 최댓값 구하기 문제 설명주어진 문자열 s는 공백으로 구분된 숫자들로 이루어져 있습니다.이 문자열에서 숫자들을 분리하여 최솟값과 최댓값을 찾아 출력하는 것이 목표입니다.코드 설명아래는 최솟값과 최댓값을 찾는 solution 메서드의 전체 코드입니다: 힌트 1: 문자열 분리하기먼저 주어진 문자열을 공백을 기준으로 나눌 필요가 있습니다. Java에서 문자열을 특정 문자를 기준으로 나누는 메서드를 찾아보세요.// 주어진 문자열 s를 공백을 기준으로 나누어 배열에 저장합니다.String[] tmpArr = s.split(" ");힌트 2: 문자열을 정수로 변환하기문자열 배열의 각 요소를 정수로 변환해야 합니다. 이를 위해 각 요소를 순회하면서 정수 배열에 저장해보세요.// 문자열 배..
[프로그래머스] 구명보트 코드 힌트배열을 정렬하여 사용하기:배열 people을 오름차순으로 정렬합니다. 정렬을 통해 가장 가벼운 사람과 가장 무거운 사람을 쉽게 비교할 수 있습니다.다중 반복문을 사용하지 않고 투 포인터 알고리즘을 사용하기:투 포인터 알고리즘을 사용하여 효율적으로 사람들을 보트에 태웁니다.startIdx는 가장 가벼운 사람을 가리키고, endIdx는 가장 무거운 사람을 가리킵니다.탐욕법으로 조건을 처리하기:각 단계에서 가장 가벼운 사람과 가장 무거운 사람을 비교하여 보트에 태웁니다.투 포인터 알고리즘이란?1차원 배열에서 각기 서로 다른 원소를 가리키고 있는 2개의 포인터를 조작해가면서 원하는 값을 찾을 때까지 탐색하는 알고리즘입니다. 일반적으로 배열의 시작과 끝에서 포인터를 시작하여 서로를 향해 이동하면서 조건을..

728x90