본문 바로가기

Java

(8)
[Programmers/Level 3/Java] 정수 삼각형 Programmers(프로그래머스) 정수 삼각형 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 문제 설명 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 한다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동이 가능하다. 풀이 동적계획법(Dynamic Programming)의 가장 기본이 되는 문제이다. '경로'를 찾는다기 보다는, 거쳐간 숫자의 '누적 합'이 큰 경우를 찾는 문제라고 생각하면 된다. 코드는 다음과 같이 구현하였다. class Solution { public int solution(int[][..
[Programmers/Level 2/Java] 라면공장 Programmers(프로그래머스) 라면공장 코딩테스트 연습 - 라면공장 라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니�� programmers.co.kr 문제 설명 현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량(supplies), 원래 공장으로부터 공급받을 수 있는 시점 k가 주어질 때, 밀가루가 떨어지지 않고 공장을 운영하기 위해서 최소한 몇 번 해외 공장으로부터 밀가루를 공급받아야 하는지를 return 하라. 예) stock = 4 dates = [4, 10 ,15] supplies = [20,..
[Programmers/Level 3/Java] 2 x n 타일링 Programmers(프로그래머스) 2 x n 타일링 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 �� programmers.co.kr 문제 설명 가로 길이가 2이고 세로 길이가 1인 직사각형 모양의 타일을 가지고 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우는 방법의 수를 구하라. 풀이 아래 백준 11726번 2×n 타일링 풀이 참고하자. 조건만 조금 다를 뿐, 동일한 문제이다. [Baekjoon/Silver 3/Java] 11726번: 2×n 타일링 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2..
[Programmers/Level 2/Java] 조이스틱 Programmers(프로그래머스) 조이스틱 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 문제 설명 조이스틱으로 알파벳 이름을 완성하라. 처음에는 모두 A로만 이루어져 있으며, 상하로 알파벳을 선택하고, 좌우로 커서를 옮길 수 있다. 첫번째 위치에서 조이스틱을 왼쪽으로 조작하면 마지막 위치로 커서를 이동하고, "A"에서 조이스틱을 위쪽으로 조작하면 "Z"로 입력된다. 예) "JAZ"라는 이름을 만들기 위해, "AAA"에서 조이스틱을 다음과 같이 움직여야 한다. - 첫번째 알파벳 "J"를..
[Programmers/Level 2/Java] 124 나라의 숫자 Programmers(프로그래머스) 124 나라의 숫자 코딩테스트 연습 - 124 나라의 숫자 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. programmers.co.kr 문제 설명 124 나라에서는 다음과 같은 규칙으로 수를 표현한다. 1. 124 나라에는 자연수만 존재 2. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용 즉, 다음과 같이 변환된 숫자를 사용한다. 1(10) ---> 1(124) 2(10) ---> 2(124) 3(10) ---> 4(124) 4(10) ---> 11(124) 5(10) ---> 12(124)..
[Programmers/Level 3/Java] 종이접기 Programmers(프로그래머스) 종이접기 코딩테스트 연습 - 종이접기 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽�� programmers.co.kr 문제 설명 직사각형 종이를 n번 접으려고 한다. 이 때, 항상 오른쪽 절반을 왼쪽으로 접는다. 종이를 모두 접은 후 전부 펼쳤을 때, ∨ 모양이 생긴 부분을 0으로, ∧ 모양이 생긴 부분은 1로 표시하여 접힌 부분의 모양 배열을 return 하라. 예) n = 1 -> result = [0] n = 2 -> result = [0, 0, 1] n = 3 -> result = [0, 0, 1, 0, 0, 1,..
[Programmers/Level 2/Java] 짝지어 제거하기 Programmers(프로그래머스) 짝지어 제거하기 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 문제 설명 알파벳 소문자로 이루어진 문자열 s가 주어질 때, 같은 문자가 2개 붙어있는 짝을 찾아 제거한다. 짝을 제거한 나머지 문자열을 다시 이어 붙여 문자열을 모두 제거할 때까지 반복한다. 짝지어 제거하기를 성공적으로 수행할 수 있다면 1을, 아닐 경우 0을 리턴한다. 예) baabaa -> bbaa -> aa -> 짝지어 제거하기로 모두 제거할 수 있으므로 1을 리턴한다. 풀이 정확성 뿐만 아..
[Programmers/Level 2/Java] 최솟값 만들기 Programmers(프로그래머스) 최솟값 만들기 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr 문제 설명 길이가 같은 자연수 배열 A, B가 주어졌을 때, 배열 A와 B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한다. 이러한 과정을 배열의 길이만큼 반복해 누적하여, 최종적으로 최소가 되는 누적 값을 구하라. 예시) A = [1, 4, 2], B = [5, 4, 4] 0 + 5(1*5) + 16(4*4) + 8(2*4) = 29 answer: 29 풀이 한 쪽 배열의 최대값과 다른 쪽 ..