차곡차곡 성 쌓기
article thumbnail
[백준] 타일 채우기 2133 - DP
알고리즘/백준 2025. 2. 11. 18:57

1. 문제  2. 접근우선 그려봤다. N이 2일 때, 4일 때, 6일 때그려보니 4일 때 새로운 경우가 2가지 나오는 것을 알았다. 이것을 제외하면 dp[i-2]*3을 해주면 되는데, 새로운 경우를 어떻게 처리할지 몰랐다.  근데 N이 4일 때 말고도 6, 8... 이 될 때마다 새로운 경우가 아래 처럼 2가지 추가됐다.이 경우를 따로 구해줘야 한다.dp[0] = 1;dp[2] = 3;for(int i=4; i=0; j-=2){ dp[i] += dp[j]*2; }} 만약 내가 구하는 것이 dp[6]이라할 때, 우선 dp[4]에서 3을 곱한다. 왜 3을 곱하냐면 dp[2]가(3x2), 즉 3x2를 구성하는 경우의 수가 3이기 때문이다. 그래서 3x4를 이루는 블록에 3x2 블록을 붙여주는..

article thumbnail
[프로그래머스] 택배 배달과 수거하기 level2 (Java) - 그리디

1. 문제성능 요약메모리: 102 MB, 시간: 39.17 ms구분코딩테스트 연습 > 2023 KAKAO BLIND RECRUITMENT 문제 설명당신은 일렬로 나열된 n개의 집에 택배를 배달하려 합니다. 배달할 물건은 모두 크기가 같은 재활용 택배 상자에 담아 배달하며, 배달을 다니면서 빈 재활용 택배 상자들을 수거하려 합니다.배달할 택배들은 모두 재활용 택배 상자에 담겨서 물류창고에 보관되어 있고, i번째 집은 물류창고에서 거리 i만큼 떨어져 있습니다. 또한 i번째 집은 j번째 집과 거리 j - i만큼 떨어져 있습니다. (1 ≤ i ≤ j ≤ n)트럭에는 재활용 택배 상자를 최대 cap개 실을 수 있습니다. 트럭은 배달할 재활용 택배 상자들을 실어 물류창고에서 출발해 각 집에 배달하면서, 빈 재활용 ..

article thumbnail
[프로그래머스] 석유 시추 - level2(Java)

1. 문제[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.]세로길이가 n 가로길이가 m인 격자 모양의 땅 속에서 석유가 발견되었습니다. 석유는 여러 덩어리로 나누어 묻혀있습니다. 당신이 시추관을 수직으로 단 하나만 뚫을 수 있을 때, 가장 많은 석유를 뽑을 수 있는 시추관의 위치를 찾으려고 합니다. 시추관은 열 하나를 관통하는 형태여야 하며, 열과 열 사이에 시추관을 뚫을 수 없습니다.예를 들어 가로가 8, 세로가 5인 격자 모양의 땅 속에 위 그림처럼 석유가 발견되었다고 가정하겠습니다. 상, 하, 좌, 우로 연결된 석유는 하나의 덩어리이며, 석유 덩어리의 크기는 덩어리에 포함된 칸의 수입니다. 그림에서 석유 덩어리의 크기는 왼쪽부터 8, 7, 2입니다.시추관은 위 그림처럼 설치한 위치 ..

자바 코딩 테스트 필수 자료구조
알고리즘 2025. 1. 28. 21:12

자바 자료구조 문법큐Queue que = new LinkedList();// 꺼내기, 없어짐int cur = que.poll();// 꺼내기, 안없어짐int cur = que.peek();// 넣기que.add(cur);우선순위 큐PriorityQueue que = new PriorityQueue();// 꺼내기, 없어짐int cur = que.poll();// 꺼내기, 안없어짐int cur = que.peek();// 넣기que.add(cur);스택Stack stack = new Stack();// 꺼내기, 없어짐int cur = stack.pop();// 넣기stack.add(cur);리스트List list = new ArrayList();// 맨 뒤에 1 삽입list.add(1);// 2 자리에 3..

[프로그래머스] 퍼즐 게임 챌린지 level2- JAVA

문제당신은 순서대로 n개의 퍼즐을 제한 시간 내에 풀어야 하는 퍼즐 게임을 하고 있습니다. 각 퍼즐은 난이도와 소요 시간이 정해져 있습니다. 당신의 숙련도에 따라 퍼즐을 풀 때 틀리는 횟수가 바뀌게 됩니다. 현재 퍼즐의 난이도를 diff, 현재 퍼즐의 소요 시간을 time_cur, 이전 퍼즐의 소요 시간을 time_prev, 당신의 숙련도를 level이라 하면, 게임은 다음과 같이 진행됩니다.diff ≤ level이면 퍼즐을 틀리지 않고 time_cur만큼의 시간을 사용하여 해결합니다.diff > level이면, 퍼즐을 총 diff - level번 틀립니다. 퍼즐을 틀릴 때마다, time_cur만큼의 시간을 사용하며, 추가로 time_prev만큼의 시간을 사용해 이전 퍼즐을 다시 풀고 와야 합니다. 이전..