프로그래머스

코딩 테스트

(Java) 프로그래머스 - 우박수열 정적분

문제가 콜라츠 추측과 정적분이 같이 있어서 조금 읽기 어려웠다. 문제가 이해가 된다면 그리 어렵지 않은 문제였다. 인풋값이 작아서 시간 초과 걱정은 하지 않았고 완전 탐색으로 모든 넓이의 조합을 다 만들어 둘까 생각하다 너무 비효율적인 것 같아 배열을 돌면서 바로바로 넓이를 구했다. 로직 k가 1이 될때까지 나머지 숫자를 구하고 list에 추가한다. 그리고 정적분을 진행하면 되는데, 먼저 정적분의 범위를 구하고 시작 값이 끝 값보다 크다면 answer 배열에 -1을 추가하고 넘어간다. 시작 값이 끝 값보다 작다면 x의 크기를 1로 고정하고 사다리꼴의 넓이를 구하고 이를 sum에 추가한다. 사다리꼴의 넓이는 (윗변 + 아랫변) x 높이 / 2인데, 여기서 높이는 1로 고정되어 있으므로 (윗변 + 아랫변) ..

코딩 테스트

(Java) 프로그래머스 - 연속된 부분 수열의 합

문제를 읽고 완전 탐색은 인풋값이 크기 때문에 당연히 시간 초과가 난다고 생각해서 배제했다. 부분 수열 문제에서 O(N) 로직을 가지는 건 투포인터와 슬라이딩 윈도우인데, 이번 문제는 정렬되어 있고, 부분 수열의 길이가 가변적이니 투포인터를 사용했고 문제 조건에 맞게 저번 카카오 문제에서 썼던 Comparator를 사용하여 정렬하고 값을 리턴했다. 오랜만에 투포인터를 써서 더듬거리며 풀었지만 꽤 재미있었다. 최종 코드 import java.util.*; class Solution { public int[] solution(int[] sequence, int k) { int[] answer = new int[2]; List list = new ArrayList(); int start = 0; int end..

코딩 테스트

(Java) 프로그래머스 - 이모티콘 할인행사

문제를 읽고 대략적인 로직은 빠르게 세워졌지만 구현에는 꽤 많은 시간이 소요되었다. 인풋 값이 크지 않아서 시간 초과는 생각하지 않고 풀었다. 먼저 가능한 할인 조합을 만들고 users 배열과 emoticons 배열을 순회하며 계산후 result 배열에 담고 정렬해주었다. 총 1시간 정도 걸렸는데 풀이 시간을 더 빠르게 하고 싶다... 최종 코드 import java.util.*; class Solution { static List list; static int[] dis = new int[] {10,20,30,40}; public int[] solution(int[][] users, int[] emoticons) { int[] answer = new int[2]; list = new ArrayList(..

코딩 테스트

(Java) 프로그래머스 - 택배상자

문제 설명부터 Stack을 쓰라고 말하는 것 같았다. 메인 컨베이어 벨트는 Queue로 서브 컨베이어 벨트는 Stack을 이용해서 풀이했다. 90% 풀이 금방 끝냈지만, while문의 종료 조건을 생각하느라 시간이 걸렸다. flag 변수를 이용해서 어떠한 작업도 하지 않는다면 while문을 종료시켜 풀이에 성공했다. 최종 코드 import java.util.*; class Solution { public int solution(int[] order) { int answer = 0; Stack stack = new Stack(); Queue queue = new LinkedList(); for(int i = 1; i

로승리
'프로그래머스' 태그의 글 목록 (3 Page)