https://www.acmicpc.net/problem/15990백준 15990번: 1, 2, 3 더하기 5문제풀이위 문제는 1, 2, 3의 합으로 표현하는 모든 경우를 구하여야 합니다. 또한 같은 숫자를 연속해서 2번 이상 사용할 수 없습니다. 즉 마지막으로 사용한 숫자가 다시 연속으로 등장하면 안됩니다. 이 조건을 만족하기 위해 각 경우의 마지막으로 사용된 숫자를 명시적으로 관리해야 합니다. 이를 위해 2차원 배열을 사용해 dp[i][j]를 다음과 같이 정의합니다.dp[i][j]: i를 1, 2, 3의 합으로 나타날 때 마지막 숫자가 j인 경우의 수 🤔 왜 2차원 배열을 써야할까?마지막으로 사용된 숫자를 추척함으로써, 같은 숫자가 연속해서 등장하지 않도록 관리할 수 있으며, 이를 통해 결과를 계산..
https://www.acmicpc.net/problem/2563백준 2563번: 색종이문제 풀이가로와 세로 길이가 각각 100인 도화지가 있습니다. 이 도화지 위에 가로와 세로 크기가 각각 10인 색종이 N장을 붙입니다. 색종이는 도화지의 변과 평행하게 붙이며, 색종이가 겹칠 수 있습니다. 이 문제는 겹치는 부분을 고려하여 총 검은색 영역의 넓이를 계산하는 문제입니다. 수학적으로 푼다면 넓이를 계산하고 겹친 부분을 뺀다면 쉽게 구할 수 있으나, 해당 문제는 알고리즘으로 풀어야 합니다. 우선 도화지를 나타낼 배열을 [100][100] 크기로 생성합니다. 이때 타입은 boolean으로 하여 ture는 포함, false는 미포함으로 구분합니다.즉, 어떤 수 x, y에 대해 배열[x][y]가 true이면 그 ..
https://school.programmers.co.kr/learn/courses/30/lessons/87390?language=java문제 설명 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈칸을 숫자 i로 채웁니다. 1행, 2행, ..., n행을 잘라내어 모두 이어 붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다. 정수 n, left, right가 매개..
https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명 XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다. 예를 들어, 정현이가 원하는 제품이 바나나 3개, 사과 ..
https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어,..
https://school.programmers.co.kr/learn/courses/30/lessons/138476 문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다. 경화가 한 상자에 담으..
https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다..
https://school.programmers.co.kr/learn/courses/30/lessons/12914#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지..