본문 바로가기

728x90

프로그래머스(Java)

(192)
[프로그래머스] 배열 만들기 2 코드 힌트정규 표현식을 사용한 방법:숫자를 문자열로 변환한 후, 정규 표현식을 사용하여 필터링합니다.정규 표현식 "^[^12346789]*$"는 '0'과 '5'만 포함된 숫자에 매칭됩니다. 즉, 숫자 문자열이 '1', '2', '3', '4', '6', '7', '8', '9'를 포함하지 않으면 매칭됩니다.이 방법은 구현이 간단하지만 성능 면에서 비효율적일 수 있습니다.비트를 사용한 방법:비트 연산을 통해 숫자의 각 자리를 효율적으로 검사할 수 있습니다.각 자리를 비트 연산으로 확인하여 '0'과 '5' 외의 숫자가 포함되어 있지 않는지 검토합니다.이 방법은 성능이 뛰어나지만 구현이 복잡할 수 있습니다.나머지를 사용한 방법:각 자리 숫자를 나머지 연산으로 검사하여 0과 5만 포함된 숫자인지 확인합니다.예를..
[프로그래머스] 수열과 구간 쿼리 2 코드 힌트배열 생성:결과를 저장할 배열을 queries의 길이만큼 생성합니다.반복문을 통한 쿼리 처리:각 쿼리에 대해 시작 인덱스 s, 끝 인덱스 e, 기준 값 k를 가져옵니다.구간 내 최소값 찾기:s부터 e까지의 구간에서 k보다 큰 값 중 가장 작은 값을 찾습니다.결과 저장:만약 k보다 큰 값이 없으면 -1을, 그렇지 않으면 찾은 최소 값을 결과 배열에 저장합니다. 정답은 더보기 클릭더보기class Solution { public int[] solution(int[] arr, int[][] queries) { // 쿼리 수만큼 결과 배열 생성 int[] result = new int[queries.length]; int idx = 0; // 결과..
[프로그래머스] 수열과 구간 쿼리 3 코드 힌트queries 배열을 순회:2차원 배열인 queries를 for문을 사용하여 순회합니다. 각 쿼리 [n, m]를 가져올 수 있게 합니다.forEach를 사용해도 좋고, 일반 for문을 사용해도 괜찮습니다.값 교환하기:arr[n]과 arr[m]의 위치를 바꿉니다. 자바에서 값을 교환할 때는 임시로 저장할 변수(temp)를 사용해야 합니다.파이썬에서는 n, m = m, n처럼 간단하게 값을 교환할 수 있지만, 자바에서는 temp = n;    n = m;    m = temp;  와 같이 임시 변수를 사용합니다.메소드 활용 연습:solution 메소드에 모든 코드를 넣을 수도 있지만, 메소드 분리를 연습하고 싶다면 swap 메소드를 따로 만들어 보세요. 이렇게 하면 코드가 더 깔끔해지고 재사용성이 ..
[프로그래머스] 치킨 쿠폰 힌트초기 설정:서비스 치킨의 수를 저장할 변수를 초기화합니다. (service 변수)반복문:치킨 쿠폰의 수가 10장 이상인 동안 반복합니다.서비스 치킨 계산:현재 치킨 쿠폰 수를 10으로 나누어 서비스 치킨의 수를 계산하고, 이를 service 변수에 더합니다.남은 쿠폰 계산:남은 쿠폰은 현재 치킨 쿠폰을 10으로 나눈 몫(서비스 치킨의 수)과 나머지(교환 후 남은 쿠폰)를 더한 값이 됩니다.반복 종료:치킨 쿠폰이 10장 미만이 되면 반복문을 종료하고, 최종적으로 계산된 서비스 치킨의 수를 반환합니다. 정답은 더보기 클릭더보기class Solution { public int solution(int chicken) { // 서비스 치킨의 개수를 저장할 변수 in..
[프로그래머스] 연속 부분 수열 합의 개수 코드 힌트중복을 제거하기 위해 HashSet 사용하기:HashSet은 중복된 값을 자동으로 제거해줍니다. 이를 활용해 조합의 합을 저장합니다.연속된 부분 수열을 구하는 문제:주어진 배열에서 연속된 숫자들의 합을 구하는 문제입니다. 바로 옆에 이어지는 숫자들로 조합의 합을 계산해야 합니다.모든 길이의 연속된 부분 수열을 고려:조합의 길이는 1부터 배열의 길이까지 모두 포함됩니다. 즉, 모든 가능한 연속된 부분 수열을 구해야 합니다.% 연산자를 사용하여 배열의 쉬프트 구현:원형 배열을 구현하기 위해 % 연산자를 사용합니다. 이를 통해 배열의 끝에서 다시 처음으로 돌아가는 순환 구조를 쉽게 처리할 수 있습니다. 정답은 더보기 클릭더보기import java.util.*;class Solution { // ..
[프로그래머스] 간단한 식 계산하기 코드 힌트문자열 분리: 공백을 기준으로 문자열을 분리합니다. 이를 위해 split(" ") 메소드를 사용합니다.피연산자 추출: 분리된 문자열에서 피연산자를 추출하여 정수로 변환합니다.연산자 추출: 분리된 문자열에서 연산자를 추출합니다.연산 수행: 연산자에 따라 적절한 연산을 수행하고 결과를 반환합니다.  정답은 더보기 클릭더보기class Solution { public int solution(String binomial) { // 공백을 기준으로 문자열을 분리하여 배열로 변환 String[] instruction = binomial.split(" "); // 첫 번째 피연산자를 정수로 변환 int firstOperand = Intege..
[프로그래머스] 문자열 정렬하기 (2) 코드 힌트소문자로 변환: 문자열을 소문자로 변환해야 합니다. 이를 위해 toLowerCase() 메소드를 사용합니다.정렬: 정렬은 Arrays.sort() 메소드를 사용하면 빠르게 할 수 있습니다.배열로 변환: Arrays.sort()를 사용하기 위해서는 문자열을 배열로 변환해야 합니다. 이때 split("") 또는 toCharArray()를 사용할 수 있습니다.문자열로 변환:  String.join()을 사용하여 배열을 다시 합쳐줍니다. 정답은 더보기 클릭더보기import java.util.*;class Solution { public String solution(String my_string) { // 문자열을 소문자로 변환 String[] strArr = my_stri..
[프로그래머스] 주식가격 코드 힌트2중 for문으로 풀기이 방법은 가격이 떨어지는 시점을 찾기 위해 두 번 반복문을 사용하는 방법입니다.초기화:결과를 저장할 배열 result를 prices 배열의 크기만큼 초기화합니다.모든 요소가 0으로 설정됩니다.이중 루프:첫 번째 루프는 각 가격을 순차적으로 확인합니다.두 번째 루프는 현재 가격 이후의 가격을 비교합니다.가격 하락 확인:만약 가격이 떨어지는 순간을 찾으면, 그 시점까지의 시간을 result 배열에 기록합니다.가격 유지 처리:끝까지 가격이 떨어지지 않는 경우에는 남은 시간을 result 배열에 기록합니다.Stack을 활용하여 풀기이 방법은 스택을 사용하여 가격이 떨어지는 시점을 효율적으로 찾는 방법입니다.초기화:결과 배열 result와 인덱스를 저장할 스택을 초기화합니다.가격 ..

728x90