목록코딩 테스트 (70)
YataNox
문제문제 풀이두 배열 중 한 배열은 한 값에 나누어떨어지고 한 배열은 안되는 경우 중 가장 큰 수를 뽑는 문제.생각해보면 정답은 한 배열의 가장 작은 수 보다 클 수가 없다. ( 더 크다면 그 값은 가장 작은 수로 무조건 나눌 수가 없다)그래서 확인은 두 배열의 가장 작은 값 두 개를 활용하여 풀면 된다.여기서 그 두 값만 확인한다고 끝이 아니라 각 수의 약수들도 확인을 해주어야한다.가장 작은 두 값은 조건을 만족하지 않는데 해당 두 수의 각 약수 중 하나가 조건을 만족하는 경우 해당 값이 정답이 되기 때문이다. 즉, 1. A배열의 가장 작은 수의 약수가 A배열을 다 나눌 수 있고 B배열을 다 못나누는 경우2. B배열의 가장 작은 수의 약수가 B배열을 다 나눌 수 있고 A배열을 다 못나누는 경우이 두 가..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이우선 귤을 크기별로 정렬한다.이후 크기별로 갯수를 카운트하고 다시 갯수별로 정렬을 진행한다.그러면 한 배열에 크기당 갯수 별로 정렬된다.이후 가장 많은 갯수를 가진 귤부터 k개를 꺼낼 때까지 담아주면 종료자바 코드import java.util.Arrays;class Solution { public int solution(int k, int[] tangerine) { int answer = 0; // 귤 크기별 정렬 Arrays.sort(tangerine)..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이일단 내림차순으로 저장하는 우선순위 큐를 하나 생성하고 적군 배열 수만큼 for문을 돌려 큐에 각 배열의 적군을 기록하면서 n을 차감한다.이때1.병사가 다죽었는데 무적권이 남아있는 경우,2.병사도 무적권도 없는 경우3.이외의 상황으로 나누어 처리한다. 1는 무적권 수만큼 우선순위 큐에서 적군 수를 뽑고 병사 수 n을 나오는 적군 수만큼 다시 증가 시킨다.이때 무적권이 다 소모됬거나 병사가 0명보다 많아졌을 경우 종료한다.2는 그대로 종료한다.3는 적군을 잘 막은 상황으로 정답 수를 + 1 한다...
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이PriorityQueue를 쓰든 Arrays.sort를 쓰든 Comparator를 이용하여 정렬 기준을 정해주어야한다col번째 데이터를 기준으로 해당 숫자끼리 비교했을 때 같으면 첫 번째 데이터를 기준으로 내림차순 정렬아니면 col번째 데이터를 기준으로 오름차순 정렬이다. (배열은 0부터 시작이므로 당연히 col - 1을 기준으로 비교해야한다.) 이후 각 자리수를 row_begin ~ row_end로 나눈 나머지를 각각 더해서 각 숫자를 ^ 연산해주면 끝.자바 코드import java.util.*..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.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들의 이전 구간으로 축소된다. 더보기무슨 소리인고 하니 ..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이소스코드의 주석에도 달아놨지만결국 1의 자리 수를 하나하나 검사해 나갈때 6이상이면 층 수를 올리고 4이하면 층 수를 내리면 된다. 이때 5인 경우가 있는데 이때는 다음 10의 자리수가 5이상인지 이하인지만 생각하면 된다.5이상인 경우 층 수를 올리고 미만인 경우 내린다.더보기1의 자리수가 5일 때 10의 자리수가 5이상이면 올리는 이유는 층수를 올리는 경우 다음 자리수에 +1의 영향을 주게된다. 즉 5이상일 때 +1의 영향을 받아 10의 자리수를 올릴 때의 이동 층수를 하나 감소 시켜준다.반대로 ..
문제 문제 풀이스택을 활용한 풀이를 진행했다.처음부터 마지막 집까지 배달 / 수거해야하는 상자의 개수만큼 각각의 스택에 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..
문제문제 풀이이론은 아래의 블로그에서 참고하였다. [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 등의 조..