티스토리 뷰
반응형
안녕하세요? 수구리입니다!
이번 포스팅에서는 마찬가지로 배수와 관련된 문제를 풀어보려고 하는데요~
처음에 이진수로 해서 풀어보려했지만 실패..
암튼 문제는 아래 링크에 걸어두었습니다..!
문제를 보고 풀이를 보시면 무슨 소린지 이해하실 수 있을겁니다!
[ 문제 ] 2102. 배수 (Hard)
배수 (Hard)
$0$과 $1$로 이루어진 $N$의 배수 중 가장 작은 자연수를 출력한다. 이때 출력되는 자연수의 맨 앞자리는 $1$이어야 한다. 조건을 만족하는 자연수가 unsigned long long형의 범위에 없을 경우 $0$을 출력
codeup.kr
[ 나의 풀이 ]
#include <iostream>
#include <algorithm>
using namespace std;
unsigned long long N;
const unsigned long long lim = 11111111111111111111;
unsigned long long minVal = UINT64_MAX;
void solution(unsigned long long start) {
if (start % N == 0)
minVal = min(minVal, start);
if (start > lim / 10)
return;
solution(start * 10 + 1);
solution(start * 10);
}
int main()
{
cin >> N;
if ( N > lim ) {
cout << 0;
return 0;
}
solution(1);
if (minVal == UINT64_MAX)
cout << 0;
else cout << minVal;
return 0;
}
[ 설명 ]
1. 사용자로부터 자연수 N 값을 입력받는다. 이때, N의 범위는 lim 보다 작아야 한다.
(2^64는 10^20 보다 작으므로 0과 1을 사용해서 만들 수 있는 가장 큰 값은 1이 20개로 이뤄져야 함)
2. 시작값 (=start)를 1부터 재귀를 통해 10을 곱하거나, 10을곱하고 1을 더해서 십진수를 이진수처럼 계산한다.
3. 결과를 출력한다.
반응형
'✏️ PS > CodeUp' 카테고리의 다른 글
[ C++ ] Code-Up 1405: 숫자 로테이션 (0) | 2021.10.06 |
---|---|
[ C++ ] Code-Up 1088: 3의 배수는 통과 (0) | 2021.09.16 |
[ C++ ] Code-Up 1226: 이번 주 로또 (4) | 2021.09.08 |
[ C++ ] Code-Up 1287: 구구단을 *로 출력하기 (0) | 2021.09.08 |
[ C++ ] Code-Up 1441: 버블 정렬 (0) | 2021.09.08 |
04-14 04:08
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- GIT
- 동적스트링
- 빅데이터처리기사
- programmers
- BOJ
- TypeScript
- 일상
- typeORM
- 문자열
- C++
- vector
- c++17
- 일차원배열
- config
- 삽질
- 알고리즘
- nestjs
- 배열
- nest
- 회고
- 티스토리챌린지
- 전문가를위한C++
- django
- 코드업
- Python
- 오블완
- 백준
- MFC
- 프로그래머스
- 빅분기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함