본문 바로가기

분류 전체보기166

[Programmers] 최댓값과 최솟값 https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 문자열의 마지막 문자에 도달하거나 공백이 나오기 이전까지의 문자를 숫자로 변형하여 하나씩 읽어가며 최솟값, 최댓값 여부를 판단한다. 구현 [스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~ 더보기 #include using namespace std; string solution(string s) { int min = 2147483647; int max = -21.. 2023. 12. 28.
[Baekjoon] 1049번: 기타줄 https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 문제 해결 과정 착안 기타줄의 패키지 가격과 낱개 가격을 각각 별도의 배열에 저장한 다음 오름차순으로 정렬하고, 패키지로 구매하는 경우와 낱개를 구매하는 경우를 비교하여 문제를 해결한다. 구현 필요한 기타줄의 수를 $N$이라 할 때, 다음과 같이 두 가지 조건을 비교하여 문제를 해결할 수 있다. 패키지로 구매하는 경우와 낱개로 6 개씩 구매하는 경우를 비교한다. 패키지로 구매하는 경우와 $N$.. 2023. 12. 26.
[Programmers] 구명보트 https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 하나의 구명보트에는 최대 2 명씩 태울 수 있으므로, 구명보트를 최소로 사용하려면 가능한 한 2 명씩 탑승을 시켜야 한다. 따라서 현재 남아있는 사람을 기준으로 가장 무거운 사람을 먼저 태운 다음, 가장 가벼운 사람을 보트에 태울 수 있는지 확인하여 태울 수 있다면 같은 보트에 태우고 그렇지 않다면 새로운 보트를 준비한다. * 가장 무거운 사람이 타고 남는 공간에 가장 가벼운.. 2023. 12. 23.
[Baekjoon] 1436번: 영화감독 숌 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 문제 해결 과정 착안 $N$ 번째 종말의 수를 찾을 때까지 반복문을 통해 666부터 시작하여, 숫자를 문자열로 바꾸었을 때 666이라는 문자열을 포함하는지의 여부를 확인하여 카운팅하고 숫자를 1씩 증가시킨다(브루트 포스(brute-force) 방법). 또는, $N (1 \le N \le 10000)$ 번째 종말의 수가 가지는 규칙성을 파악하여 이를 활용해 문제를 해결한다. 구현 1) 숫자를 1씩.. 2023. 12. 22.
[Programmers] 배달 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해결 과정 착안 1번 마을에서부터 시작하여, 1, 2, $\cdots, N$ 번 마을까지의 최단 경로를 모두 구하여 $K$ 시간보다 적게 걸리는 마을의 수를 카운트하여 문제를 해결하기 위해 플로이드-워셜(Floyd-Warshall) 알고리즘을 활용하여 문제를 해결하고자 하였다. 구현 $i, j \space (1 \le i, j \le N)$ 번 마을 사이의 최단 경로로 이동할 때의 가중치의 .. 2023. 12. 21.
[Baekjoon] 1890번: 점프 https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 문제 해결 과정 착안 가장 왼쪽 위의 칸에서 시작하여 이동할 때, 각 칸마다 오른쪽 또는 아래쪽으로 이동할 수 있는 두 가지의 경우가 있기 때문에 재귀를 통해 문제를 해결하면 문제에 따라 최대 지수 시간의 시간 복잡도($O(2^n)$)를 나타내게 될 수 있으므로, 이동할 수 있는 경우의 수를 누적하여 계산하는 동적계획법(dynamic programming)에 기반하여 문제를 해결하고자 .. 2023. 12. 21.