본문 바로가기

프로그래머스(Java)

(192)
[프로그래머스] 무작위로 K개의 수 뽑기 코드 힌트중복 원소 제외하기:주어진 배열을 순회하면서 중복된 원소를 제외하고, 결과 배열에 원소를 추가합니다. 중복 확인을 위해 List를 사용하며 contains() 혹은 indexOf()로 요소를 찾았는지 확인합니다.결과 배열 초기화:결과 배열의 길이는 k로 설정합니다. 배열을 채우면서 빈 자리는 -1로 설정합니다.빈 자리를 -1로 채우기:배열을 순회하여 중복을 제외한 후, 결과 배열의 빈 자리를 -1로 채워서 배열의 길이를 맞춥니다.효율적인 중복 확인:List의 원소의 중복 여부를 확인합니다. 배열의 길이와 k의 값에 따라 결과 배열을 조정합니다. 정답은 더보기 클릭더보기import java.util.*;class Solution { public int[] solution(int[] arr, ..
[프로그래머스] 두 수의 합 코드 힌트문자열 길이 맞추기:두 문자열의 길이를 맞추기 위해 가장 긴 길이에 맞춰 왼쪽에 0을 추가합니다. 이를 위해 String.format()메소드를 사용하여 두 문자열을 동일한 길이로 만듭니다.자리 수 계산:오른쪽 끝에서부터 시작하여 각 자릿수의 합을 계산합니다. 이때, 자릿수 올림을 고려하여 계산합니다.올림 처리:각 자리의 합이 10 이상일 때, 올림을 설정하고 자릿수의 나머지를 계산합니다. 올림이 남아있는 경우에는 마지막에 추가합니다.문자열 결과 변환:각 자릿수의 계산 결과를 StringBuilder에 추가한 후, 최종적으로 문자열을 역순으로 변환하여 반환합니다. 이는 오른쪽에서부터 계산했기 때문에 필요한 과정입니다.  정답은 더보기 클릭더보기class Solution { public St..
[프로그래머스] 배열 만들기 6 코드 힌트스택을 활용한 문제 해결:스택을 사용하여 인접한 동일한 요소를 제거합니다. 스택은 후입선출(Last In, First Out) 구조를 갖기 때문에 최근에 추가된 요소를 먼저 처리할 수 있습니다.스택의 비어있음 확인:stack.isEmpty()를 사용하여 스택이 비어 있는지를 확인합니다. 스택이 비어 있을 때는 현재 요소를 추가하고 계속 진행합니다.스택의 최상위 요소 확인:stack.peek()를 사용하여 스택의 최상위 요소를 확인합니다. 현재 요소와 비교하여 동일한 경우에는 스택에서 제거(stack.pop())합니다.조건에 따른 스택 조작:현재 요소가 스택의 최상위 요소와 동일하면 제거하고, 그렇지 않으면 스택에 추가합니다. 이 작업을 반복하여 인접한 동일한 요소 쌍을 제거합니다.스택 비어있음 ..
[프로그래머스] 커피 심부름 코드 힌트주문 종류에 따른 가격 계산:주문 내용에 따라 가격을 다르게 설정합니다. 'latte'가 포함된 주문은 5000원의 가격을, 그 외의 경우는 4500원의 가격을 적용합니다.문자열 검색:contains 메서드를 사용하여 문자열이 특정 단어('latte')를 포함하고 있는지 확인합니다.조건문 사용:if 문을 사용하여 조건에 맞는 가격을 결정합니다. order.contains("latte") 조건을 통해 'latte'가 포함된 경우와 포함되지 않은 경우를 구분합니다.가격 합산:각 주문에 대해 적절한 가격을 result 변수에 누적하여 총 가격을 계산합니다. 정답은 더보기 클릭더보기class Solution { public int solution(String[] orders) { //..
[프로그래머스] 문자열 묶기 코드 힌트문자열 길이별 개수 세기:문자열 배열의 각 문자열 길이를 기준으로 그 길이의 문자열 개수를 저장하는 배열을 사용합니다.문자열 길이에 대한 인덱스 활용:문자열의 길이를 인덱스로 사용하여 개수를 저장합니다. 예를 들어, 길이가 5인 문자열은 lenArr[5]에 저장됩니다.배열의 최대 값 찾기:문자열 길이에 따른 개수를 저장한 배열에서 가장 큰 값을 찾습니다. 이 값이 가장 많이 나타난 문자열 길이의 개수를 나타냅니다. 정답은 더보기 클릭더보기class Solution { public int solution(String[] strArr) { // 문자열 길이에 따라 문자열 개수를 저장할 배열을 초기화합니다. // 최대 길이 30을 고려하여 31 크기로 설정합니다. ..
[프로그래머스] 세 개의 구분자 코드 힌트split, replaceAll를 하지 않은 힌트(정답에는 적어놓겠습니다.)문자열을 구분자에 따라 나누기:문자열에서 특정 문자('a', 'b', 'c')를 기준으로 문자열을 나누는 문제입니다.각 문자와 구분자가 있을 때까지 계속해서 문자열을 모은 후, 구분자가 나오면 모은 문자열을 저장하고 다시 초기화합니다.문자열 저장과 초기화:StringBuilder를 사용하여 구분자가 나오기 전까지 문자를 저장합니다.구분자가 나오면 StringBuilder의 내용을 리스트에 저장하고 초기화합니다.리스트를 배열로 변환:구분자를 기준으로 나눈 문자열들을 리스트에 저장한 후, 최종적으로 이 리스트를 배열로 변환합니다.특별한 경우 처리:구분자가 전혀 없는 경우, 빈 문자열 리스트를 반환하지 않도록 "EMPTY"를 ..
[프로그래머스] 배열의 길이를 2의 거듭제곱으로 만들기 코드 힌트이 문제에서는 주어진 배열 arr의 길이보다 크거나 같은 가장 작은 2의 제곱수 크기의 배열을 만들어야 합니다. 그런 다음, 새로 만든 배열에 기존 배열의 값을 복사합니다. 2의 제곱수 찾기:배열의 길이보다 크거나 같은 가장 작은 2의 제곱수를 찾기 위해 반복문을 사용합니다. 이 과정에서 n을 반복적으로 2배씩 증가시켜 나갑니다.예를 들어, 배열의 길이가 5라면, 크거나 같은 2의 제곱수는 8입니다 (2^3 = 8).새로운 배열 생성 및 값 복사:2의 제곱수 크기의 배열을 생성한 후, 기존 배열의 값을 새 배열에 차례대로 복사합니다. 만약 기존 배열의 길이가 2의 제곱수보다 작다면, 나머지 부분은 0으로 채워집니다.정답은 더보기 클릭더보기class Solution { public int[]..
[프로그래머스] 문자열이 몇 번 등장하는지 세기 코드 힌트이 문제에서는 문자열 myString에서 주어진 패턴 pat이 몇 번 나타나는지를 세어야 합니다.이를 위해 아래의 메소드와 개념을 사용하게 됩니다:반복문을 사용하여 패턴 검색:아이디어: 문자열 myString의 시작부터 끝까지 패턴 pat을 찾으려면, 문자열의 각 위치에서 pat의 길이만큼 잘라내어 그 부분이 pat과 일치하는지 확인해야 합니다.어떻게 하는지: 예를 들어, 문자열이 "hellohello"이고 패턴이 "lo"라면, "he", "el", "ll", "lo" 이렇게 차례로 부분 문자열을 만들어서 "lo"와 비교합니다.문자열을 자르는 메소드 substring():역할: 이 메소드는 문자열에서 특정 위치부터 일정 길이의 부분을 잘라내는 역할을 합니다.예시: "hello".substring..