본문 바로가기

분류 전체보기

(25)
[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..
[Baekjoon/Silver 3/Java] 11726번: 2×n 타일링 Baekjoon(백준) 11726번: 2×n 타일링 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 설명 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하라. 풀이 처음 생각한 풀이는 N을 1 또는 2로 이루어진 조합으로 만드는 형태로 접근을 했었는데, (예: 4 -> 1+1+1+1 / 2+1+1 / 1+2+1 / 1+1+2 / 2+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을 리턴한다. 풀이 정확성 뿐만 아..