목록코딩테스트/코드업 (19)
Deff_Dev
디지털 도어 락 XX사에서 만든 디지털 도어락은 내부적으로 보안키 값을 가지고 있고, 이 값은 1,000이하의 자연수로 이루어져 있다. 각 카드키들은 ID값을 가지고 있는데, 이 값이 도어락의 내부 보안키 값의 약codeup.kr 문제이 문재는 입력된 3개의 수의 최대 공약수를 구하는 문제이다. 풀이유클리드 호제법을 이용하여 최대 공약수를 구했다. 유클리드 호제법 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란ko.wikipedia.org#include // https://codeup.kr/problem.php..
나도 IQ 150 첫 줄에 이 삼각격자의 세로 길이 N이 입력된다.(2 map[i][0]; // 입력 for (int j = 0; j < i; j++) { // 계산 map[i][j + 1] = map[i][j] - map[i - 1][j] ; } } for (int i = 0; i < n; i++) { // 출력 for (int j = 0; j
(재귀함수) 팩토리얼 계산 팩토리얼(!)은 다음과 같이 정의된다. $n!=n\times(n-1)\times(n-2)\times\cdots \times2\times1$ 즉, $5! = 5 \times 4 \times 3 \times 2 \times 1 = 120$ 이다. $n$이 입력되면 $n!$의 값을 출력하시오. 이 문제는 반복문 for, while codeup.kr 문제 이 문제는 입력된 정수 n의 팩토리얼 (!)의 값을 구하는 문제이다. 풀이 재귀 함수를 이용하여 풀이했다. #include // https://codeup.kr/problem.php?id=1912&rid=0 using namespace std; int Func(int n) { if (n == 1) { return 1; } // n이 ..
(재귀함수) 2진수 변환 어떤 $10$진수 $n$이 주어지면 $2$진수로 변환해서 출력하시오. 예) 10 -----> 1010 0 -----> 0 1 -----> 1 2 -----> 10 1024 -----> 10000000000 이 문제는 반복문을 이용하여 풀 수 없습니 codeup.kr 문제 이 문제는 재귀 함수를 이용하여 10진수 정수인 n을 2진수로 변환해서 출력하는 문제이다. 풀이 n이 7이라 한다면 "1"+ to_string(3 % 2)+ to_string(7 % 2) => 111이 된다. #include #include // https://codeup.kr/problem.php?id=1920&rid=0 using namespace std; string binaryNumber(int num) ..
계단 오르기 2 계단의 수 n이 입력된다. ( 1 n; // memo 배열 초기화 vector memo(n + 1, -1); cout
기억력 테스트 2 첫째줄에 N이 입력된다. (1 m; for (int i = 0; i > num; if (memorys[num]) { // 해당 숫자가 true 일 때 1 출력 cout n; unordered_set memorys; // 맵 대신 해시셋을 사용하여 빠른 검색 가능 for (int i = 0; i > num; memorys.insert(num); // set에 숫자 추가 } cin >> m; for (int i = 0; i > num; if (memorys.find(num) != memorys.end()) { // 숫자가 발견되면 1 출력 cout
계단 오르기 첫째 줄에 계단의 개수가 주어진다. 둘째 줄부터 한 줄에 하나씩 제일 아래에 놓인 계단부터 순서대로 각 계단에 쓰여 있는 점수가 주어진다. 계단의 개수는 300이하의 자연수이고, 계단에 쓰여 codeup.kr 문제 이 문제는 일정한 점수가 쓰여있는 계단에서 마지막 계단까지 올라가는 문제로, 계단을 오를 때는 3가지 규칙이 존재한다. 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 주어진 각 계단의 점수를 이용하여 얻을 수 있는 총 점수의 최대값을 구한다. 풀이 DP를 사용하여 각 계단 별 최대 점수를 구해 n번째 계단까지의 최대 점수를 구한다. 식을 세우기 전에..
거스름돈 II $500$원 $1$개, $100$원 $2$개, $10$원 $3$개로 지불하는 것이 최소이다. 따라서 답은 $6$ codeup.kr 문제 이 문제는 자동판매기에서 거스름돈을 돌려줄 때, 최소한의 동전을 사용하여 거스름돈을 돌려주는 방법을 구하는 문제이다. 풀이 그리디로 접근하기 쉬운 문제지만, 그리디로 문제를 풀면 정답이 아닌 경우가 발생한다. 예를 들어, 동전 종류가 1원, 3원, 4원이 있고 거슬러 주어야 할 돈이 6원이라면, 그리디 알고리즘은 4원 1개, 1원 2개로 거슬러준다. 하지만 최적의 해는 3원 2개이기 때문에 틀린다. 그래서 이 문제는 DP (다이나믹 프로그래밍)을 사용해서 풀어야한다. DP를 이용하여 거슬러 줘야할 금액까지의 최소 갯수를 저장하면서 목표 금액의 최소 거스름돈..