본문 바로가기

전체 글

[Java] Lv.2 연속 부분 수열 합의 개수 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이1 ~ elements개(이하 k개)의 수열을 합산했을 때 나올 수 있는 수의 개수를 출력하는 문제이다.중복 값을 없애기 위해 HashSet을 사용한다.수열의 0번째 자리부터 시작하면서 k개의 수열의 합을 더한다.이후 더한 합을 HashSet에 저장한다.모든 연산이 종료된 뒤에 HashSet의 size를 확인하면 정답이 나온다.로직은 주석으로 확인자바 코드import java.util.*;class Solution { public int solution(int[] elements) { .. 더보기
[Java] Lv.2 택배상자 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이스택(서브 컨테이너)을 활용해야하는 문제이다.1. 메인 컨테이너에서 꺼낼 수 있는 박스가 기사가 원하는 박스(이하 기사 박스)보다 작으면 다른 것을 고려할 필요가 없고 현재 컨테이너의 박스를 서브 컨테이너에 담으면 된다.2. 메인 컨테이너와 기사 박스가 같다면 정답을 +1 하고 다음 박스를 검사한다.3. 12를 제외한 상황은 서브컨테이너를 확인해야하는 상황이다.3-2. 서브 컨테이너에서 꺼낼 수 있는 박스와 기사 박스가 같다면 2와 같이 정답을 +1 처리하고 다음 박스를 검사한다.4. 서브 컨테이.. 더보기
[Java] Lv.2 롤케이크 자르기 문제문제 풀이생각보다 단순했다.그냥 각 인원의 토핑 종류를 저장할 배열을 각각 만들고한 쪽에 일단 전부 몰아준 뒤에 하나씩 다른쪽에 넘겨주면서 토핑 종류를 비교하면 쉽다.자바 코드import java.util.*;class Solution { public int solution(int[] topping) { int answer = 0; // 토핑 종류 int toppingKind = Arrays.stream(topping).max().getAsInt(); // 각 인원이 가진 토핑 개수를 기록할 배열, 1 ~ toppingKind만큼의 수를 위해 toppingKind + 1 // 추가로 마지막에 가진 토핑 종류가 몇개인지 .. 더보기
[Java] Lv.2 우박수열 정적분 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이문제 이해가 너무 어려웠다.(프로그래머스놈들 문제를 너무 이상하게 쓴다...)콜라츠 추측으로 인해 숫자 k가 어떻게 변화하는지를 꺾인선 그래프로 그렸을 때 주어지는 [a, b] 영역에 대해 넓이를 구하라는 문제이다.위의 사진을 기준으로 문제를 풀어보면k가 5부터 시작하여 16, 8 ,4 , 2, 1순으로 n = 6개의 꼭짓점이 발생한 것이 보인다. 이 때 각 꼭짓점을 기준으로 선을 하나 그어보면 사다리꼴의 영역이 보일 것이다. 이때 n - 1 개의 사다리꼴 영역이 생긴 것이 보인다.각 사다리 꼴은.. 더보기
[Java] Lv.2 숫자 카드 나누기 문제문제 풀이두 배열 중 한 배열은 한 값에 나누어떨어지고 한 배열은 안되는 경우 중 가장 큰 수를 뽑는 문제.생각해보면 정답은 한 배열의 가장 작은 수 보다 클 수가 없다. ( 더 크다면 그 값은 가장 작은 수로 무조건 나눌 수가 없다)그래서 확인은 두 배열의 가장 작은 값 두 개를 활용하여 풀면 된다.여기서 그 두 값만 확인한다고 끝이 아니라 각 수의 약수들도 확인을 해주어야한다.가장 작은 두 값은 조건을 만족하지 않는데 해당 두 수의 각 약수 중 하나가 조건을 만족하는 경우 해당 값이 정답이 되기 때문이다. 즉, 1. A배열의 가장 작은 수의 약수가 A배열을 다 나눌 수 있고 B배열을 다 못나누는 경우2. B배열의 가장 작은 수의 약수가 B배열을 다 나눌 수 있고 A배열을 다 못나누는 경우이 두 가.. 더보기
[My_SQL] Lv.5 멸종위기의 대장균 찾기 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이전에 아래 글처럼 특정 세대의 대장균을 찾은 적이 있다. 이때 서브쿼리를 재귀처리하여 사용했었는데 문제를 보자마자 일단 재귀로 각 세대를 다 찾아야겠구나 생각이 들었는데 또 다시 코드 노가다를 해야하나 싶었다.그러다가 RECURSIVE라는 재귀용 함수를 찾았다. (효자다 효자)RECURSIVE를 통해 각 대장균의 세대를 다 구해주니 너무 편하게 원하는 테이블을 만들었다.이후 해당 테이블을 셀프 조인하고 세대별로 그룹화 한 뒤 문제를 해결했다. [My_SQL] 특정 세대의 대장균 찾기문제 무식하게 데이터를.. 더보기
[My_SQL] Lv.4 언어별 개발자 분류하기 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음엔 WITH절들을 이용해서 각 GRADE에 의해 하나하나 구한 뒤 UNION작업을 통해 합쳐주었지만 코드가 너무 길었고 비효율적이었다. 아래 블로그에서 좀 더 좋은 코드를 발견하여 공유한다. GROUP BY - [언어별 개발자 분류하기] _ LEVEL 4해당 문제는 원래 9주차에 풀었던 문제지만, 풀이 과정에 대한 자세한 설명이 필요해 따로 포스팅한다프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/276036[ 문제 ]S.. 더보기
[Java] Lv.2 귤 고르기 문제  프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이우선 귤을 크기별로 정렬한다.이후 크기별로 갯수를 카운트하고 다시 갯수별로 정렬을 진행한다.그러면 한 배열에 크기당 갯수 별로 정렬된다.이후 가장 많은 갯수를 가진 귤부터 k개를 꺼낼 때까지 담아주면 종료자바 코드import java.util.Arrays;class Solution { public int solution(int k, int[] tangerine) { int answer = 0; // 귤 크기별 정렬 Arrays.sort(tangerine).. 더보기