프로그래밍/Algorithm 35

[프로그래머스] 할인 행사

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 구매하고자 하는 목록과 해당 물건의 구매 개수는 Map에 저장 마트의 할인 목록의 길이를 N이라고 했을 때 i를 할인 항목의 0번째 부터 N - 10까지 반복하면서 할인 항목과 할인 항목의 개수를 취합하여 구매하고자 하는 물건의 개수보다 같거다 큰 경우 마트 가입 가능 날짜라고 판단하고 가입 가능 날짜의 수를 반환 import java.util.HashMap; impor..

[프로그래머스] 연속 부분 수열 합의 개수

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 1개부터 최대 배열의 길이 만큼을 선택하여 더한 값을 중복을 제거한 값의 수를 반환 원형 수열이라 표현 했으므로 문제의 예시의 배열인 [7,9,1,1,4]인 경우에 연속된 3개의 수를 선택하는 상황에서 index가 4인 4와 index가 0인 7과 index가 1인 9의 합도 고려 import java.util.HashSet; import java.util.Set; pu..

[프로그래머스] 야간 전술보행

문제 https://school.programmers.co.kr/learn/courses/30/lessons/133501 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 화랑이가 1미터 움직일 때 마다 경계 근무를 서는 근무자의 근무 시간인지 확인하고 해당 근무자가 근무하는 영역에 화랑이가 포함 되는지 확인 중요한 점은 scope의 근무 영역이 오름차순 정렬이 되어 있지 않은 테스트 케이스가 있으므로 근무 영역을 확인 하는 경우에는 0번째 수와 1번째의 수 중에 작은 수와 큰 수를 비교 하여 근무 영역을 비교 해야 함 public cla..

[프로그래머스] 조이스틱

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42860 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 A를 원하는 알파벳으로 변경하는 방법은 A에서 B방향으로 변경하거나 반대방향인 Z로 방향으로 변경하는 두가지 방법중 조이스틱을 적게 사용하는 방향으로 변경 커서를 변경하는 방향은 왼쪽이나 오른쪽으로 변경하여 적게 움직이는 방향으로 변경을 하나, 여기서 중요한 점은 좌측 또는 우측으로 트리 그래프로 모든 경우의 수에서 가장 적게 움직이는 횟수를 구하여 반환해야 함 name이..

[프로그래머스] 네트워크

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 0번째 컴퓨터부터 n-1번째 컴퓨터까지 연결된 컴퓨터를 순회하는데 순회 할 때 방문 여부를 체크 i번째 컴퓨터에서 순회를 시작 하기 전 해당 컴퓨터를 방문하지 않은 경우에만 순회를 시작 순회가 일어난 횟수가 네트워크의 구성 수 public class Q30_43162 { public int solution(int n, int[][] computers) { boolean[]..

[프로그래머스] 타겟 넘버

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 배열의 숫자 전체를 서로 더하거나 뺀 결과가 target의 숫자와 같은 경우의 수 문제의 카테고리가 깊이 또는 넓이 우선 탐색이므로 풀이 방법을 둘중에 하나로 선택 배열의 숫자를 모두 사용 해야지만 target과 비교가 가능하므로 깊이 우선 탐색으로 풀이 그래프 탐색시 depth는 배열의 index라 설정 재귀 함수의 종료 조건은 그래프 탐색의 depth가 배열의 길이와 ..

[프로그래머스] 우박수열 정적분

문제 https://school.programmers.co.kr/learn/courses/30/lessons/134239 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 문제 설명에 따라 우박수열을 구한 후 ranges 배열의 내용 대로 면적을 구함 import java.util.ArrayList; import java.util.List; public class Q30_134239 { public double[] solution(int k, int[][] ranges) { List collatzList = this.getCollatzNu..

[프로그래머스] 숫자 카드 나누기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 문제 설명에는 명시되어 있지 않지만 각 배열은 오름차순으로 정렬 되어 있다고 추측 0번째 수가 가장 작은 숫자 2부터 배열의 0번째 숫자까지 해당 배열을 모두 나눌 수 있는 숫자를 찾기 A 배열을 모두 나눌 수 있는 숫자 중 B 배열을 모두 나눌 수 없는 숫자와 B 배열을 모두 나눌 수 있는 숫자 중 A 배열을 모두 나눌 수 없는 숫자 중 가장 큰 숫자를 반환 impor..

[프로그래머스] 롤케이크 자르기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 처음 생각한 방법은 topping 배열을 1번째 인덱스부터 topping length - 1까지 기준을 이동하면서 배열을 앞쪽과 뒷쪽으로 배열을 복사하고 각 배열을 Set에 추가하여 중복을 제거 후 각 Set의 길이를 비교하여 동일 한지 비교 import java.util.Arrays; import java.util.Set; import java.util.stream.C..

[프로그래머스] 올바른 괄호

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 및 풀이 전형적인 Stack 구조를 활용한 문제 Stack을 사용 import java.util.Stack; public class Q30_12909 { boolean solution(String s) { Stack stack = new Stack(); int length = s.length(); for (int i = 0; i < length; i++) { char c = s.c..