본문 바로가기

분류 전체보기166

[Programmers] 의상 https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 코니가 가진 의상의 종류가 $i$ 개이고 각 종류별 의상 수를 $n_i$ 라고 하면, 종류별로 입지 않는 경우와 하나를 택해서 입는 경우가 존재할 수 있다. 이때, 모든 종류를 입지 않는 한 가지 경우를 제외하면 코니가 서로 다른 조합으로 옷을 입을 수 있는 경우의 수 $c$ 는 $$c = \prod_{i} n_{i} - 1$$ 이다. 구현 std::vector 형식으로 주어.. 2024. 1. 2.
[Programmers] 행렬의 곱셈 https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 $m \times n$ 크기의 행렬 $A$와 $n \times l$ 크기의 행렬 $B$에 대해, 두 행렬의 곱 $C=AB$ 는 $m \times l$ 크기의 행렬이며, $$c_{ij}=\sum_{k=1}^{n} a_{ik} b_{kj}$$ 이다($a_{ik}, b_{kj}, c_{ij}$는 각각 행렬 $A, B, C$의 요소). 구현 [스포 주의] 아래 '더보기'를 누르면 코.. 2024. 1. 2.
[Programmers] n^2 배열 자르기 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 $n \times n$ 크기의 행렬 matrix[][]는 한 행에 $n$ 개의 요소를 가지므로, 각각의 행을 이어붙여 1차원 배열로 만들었을 때의 $k$ $(1 \le k \le n^2)$ 번째 요소는 $k$ 를 $n$으로 나눈 몫을 $q$, 나머지를 $r$ 이라고 했을 때 matrix[$q$][$r$] 이다. 한편, 문제에서 주어진 규칙에 따라 $n \times n$ 크기의.. 2024. 1. 2.
[Programmers] 할인 행사 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 구매하고자 하는 물건의 수는 항상 10 개이며 XYZ 마트에서 10 일 연속으로 할인받는 경우만 카운팅하는 문제이므로, discount[] 배열에서 10 일 단위의 프레임을 만든 다음 한 칸씩 이동시켜보면서 조건을 만족하는지 확인한다. 구현 discount[] 배열의 처음 요소부터 시작하여 매번 10 개 품목에 대해 계산을 반복하면 비효율적인 시간 복잡도를 가지게 되므로, .. 2024. 1. 1.
[Programmers] 연속 부분 수열 합의 개수 https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 길이가 $n$인 원형 수열이 주어졌을 때, 각각의 요소에 대하여 길이가 1, 2, $\cdots, n$ 인 부분 수열의 합을 동적계획법(dynamic programming)을 활용해 구한 다음 중복되지 않는 합들의 갯수를 센다. 구현 중복되지 않는 부분 수열의 합들의 갯수를 세기 위해 std::unordered_set 클래스를 활용하였다. [스포 주의] 아래 '더보기'를 누.. 2023. 12. 31.
[Programmers] 짝지어 제거하기 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 문자를 짝끼리 비교하여 같은 문자면 지우는 과정을 반복하면, 지워지는 문자가 있을 때 처음부터 다시 과정을 반복해야하므로 시간 복잡도 측면에서 매우 비효율적이다. 따라서, 스택(stack) 자료 구조의 후입선출(LIFO) 원리를 활용해 문제를 해결한다. 구현 주어진 문자열에 대해 앞에서부터 문자 하나씩 잘라서, 현재 스택의 top과 비교해 두 문자가 같으면 문자 하나를 스택에.. 2023. 12. 28.