목록전체 글 (180)
YataNox
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cfDsaY/btsH0wQDpKA/VPEvZFbJy4idlEMJnpGsn0/img.png)
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음엔 WITH절들을 이용해서 각 GRADE에 의해 하나하나 구한 뒤 UNION작업을 통해 합쳐주었지만 코드가 너무 길었고 비효율적이었다. 아래 블로그에서 좀 더 좋은 코드를 발견하여 공유한다. GROUP BY - [언어별 개발자 분류하기] _ LEVEL 4해당 문제는 원래 9주차에 풀었던 문제지만, 풀이 과정에 대한 자세한 설명이 필요해 따로 포스팅한다프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/276036[ 문제 ]S..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eCmoLj/btsHZvXaOxh/ucfKpSiw95znPsjD3YlTfK/img.png)
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이우선 귤을 크기별로 정렬한다.이후 크기별로 갯수를 카운트하고 다시 갯수별로 정렬을 진행한다.그러면 한 배열에 크기당 갯수 별로 정렬된다.이후 가장 많은 갯수를 가진 귤부터 k개를 꺼낼 때까지 담아주면 종료자바 코드import java.util.Arrays;class Solution { public int solution(int k, int[] tangerine) { int answer = 0; // 귤 크기별 정렬 Arrays.sort(tangerine)..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bc4Ny1/btsHW4NALGK/c5CGQ3Ont1Dz6x4j7oXAm0/img.png)
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이일단 내림차순으로 저장하는 우선순위 큐를 하나 생성하고 적군 배열 수만큼 for문을 돌려 큐에 각 배열의 적군을 기록하면서 n을 차감한다.이때1.병사가 다죽었는데 무적권이 남아있는 경우,2.병사도 무적권도 없는 경우3.이외의 상황으로 나누어 처리한다. 1는 무적권 수만큼 우선순위 큐에서 적군 수를 뽑고 병사 수 n을 나오는 적군 수만큼 다시 증가 시킨다.이때 무적권이 다 소모됬거나 병사가 0명보다 많아졌을 경우 종료한다.2는 그대로 종료한다.3는 적군을 잘 막은 상황으로 정답 수를 + 1 한다...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c4uLjo/btsHW4Uhdey/MN1cBTp7L2CeMhHbnrTTm1/img.png)
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이PriorityQueue를 쓰든 Arrays.sort를 쓰든 Comparator를 이용하여 정렬 기준을 정해주어야한다col번째 데이터를 기준으로 해당 숫자끼리 비교했을 때 같으면 첫 번째 데이터를 기준으로 내림차순 정렬아니면 col번째 데이터를 기준으로 오름차순 정렬이다. (배열은 0부터 시작이므로 당연히 col - 1을 기준으로 비교해야한다.) 이후 각 자리수를 row_begin ~ row_end로 나눈 나머지를 각각 더해서 각 숫자를 ^ 연산해주면 끝.자바 코드import java.util.*..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vOG8p/btsHXwCDMR2/hmvxpbqsFG9AbKEOKnlnBK/img.png)
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이비트열이 11011이라고 할 때 이때 각 자리수를 01234(1~5구역)로 두게되면 0의 위치는 n * 5 + 2(3구역)이다.즉 자리수 i에 대해 i % 5 == 2가 성립하게 되면 그 자리는 0이다.다만 n이 무수히 증가 할 때 2번째 자리(3구역)에 위치한 0은 무수한 0의 5제곱 수 이다. 이 0들은 바로 % 5를 해버리면 어떤 값이 나오든 0인지 1인지 구할 수 없게 된다. 그래서 해당 자리 수의 몫( i / 5)을 구하면 그 0들의 이전 구간으로 축소된다. 더보기무슨 소리인고 하니 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cwRYh6/btsHT9V29wt/xoxVMuH27mgqK38jTdUoV1/img.png)
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이소스코드의 주석에도 달아놨지만결국 1의 자리 수를 하나하나 검사해 나갈때 6이상이면 층 수를 올리고 4이하면 층 수를 내리면 된다. 이때 5인 경우가 있는데 이때는 다음 10의 자리수가 5이상인지 이하인지만 생각하면 된다.5이상인 경우 층 수를 올리고 미만인 경우 내린다.더보기1의 자리수가 5일 때 10의 자리수가 5이상이면 올리는 이유는 층수를 올리는 경우 다음 자리수에 +1의 영향을 주게된다. 즉 5이상일 때 +1의 영향을 받아 10의 자리수를 올릴 때의 이동 층수를 하나 감소 시켜준다.반대로 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/blCn8Q/btsHVUo5uZX/2S5x7dX8nAcKwjJFhjgnL0/img.png)
문제 문제 풀이스택을 활용한 풀이를 진행했다.처음부터 마지막 집까지 배달 / 수거해야하는 상자의 개수만큼 각각의 스택에 push한다.이후 두 스택 중 하나가 빌때까지 cap의 크기만큼 스택을 비우고 두 스택 중 들어있는 집번호 크기가 큰 쪽 * 2를 활용하여 이동거리를 +해준다. 이후 비지않은 남은 스택을 빌때까지 cap수만큼 pop 해주며 이동 거리를 더해준다. 자바 코드import java.util.*;class Solution { private final Stack deliver = new Stack(); private final Stack pickup = new Stack(); public long solution(int cap, int n, int[] deliveries, int..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mIRin/btsHVxAXfnx/fTF4nj6waNK8lhaTzMPVKk/img.png)
문제문제 풀이이론은 아래의 블로그에서 참고하였다. [Java] 프로그래머스 시소 짝꿍문제 https://school.programmers.co.kr/learn/courses/30/lessons/152996?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기0713k.tistory.com 이분 탐색을 이용한 풀이법이다.4가지 조건을 생각한다.a == ba * 2 == ba * 3 == b * 2a * 4 == b * 34조건을 만족한다면 answer + 1 해준다.이때 다른 조건을 보지 않도록 a 더보기위의 말이 무슨 소리 인고 하니만약 a, b 두 숫자를 뽑았을 때 a가 더 클 경우a * 2 == b 등의 조..