Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- String 함수
- 백준 사이트
- 파이썬
- 자바 디자인패턴
- MongoDB Realm
- domain driven develop
- http 개념
- http 완벽가이드
- 백준
- golang
- 트리 순회
- 하둡
- 백준 12761
- golang struct
- ddd
- 우분투
- hadoop
- 12761 돌다리
- 고 배열
- 몽고디비 렘
- 자바 디자인 패턴
- 백준 파이썬
- go
- 백준 12761번
- 자바
- 도메인 주도 개발
- 정렬
- 12761번 돌다리
- flask
- 도메인 주도 개발 시작하기
Archives
- Today
- Total
개발바닥
BOJ_1790 [ 수 이어 쓰기 2 ] 본문
반응형
문제
https://www.acmicpc.net/problem/1790
문제 해결 방법
10^0 총 개수 = 9개
10^1 총 개수 = 90개
10^2 총 개수 = 900개
10^3 총 개수 = 9000개
... ...
위 규칙을 이용해서 입력 값 M이 어떤 숫자인지 구하고
나머지 값을 이용해서 해당 자리수에 값을 출력하였습니다.
소스 코드
https://github.com/jokerKwu/BOJ_Algorithm/blob/master/Math/boj_1790.cpp
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<string>
using namespace std;
int N, K;
typedef long long ll;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N >> K;
int tmp = K;
int num = 0;
for (int i = 0; i < 9; i++) {
ll tmp_value = (pow(10, i)*9)*(i+1); //각 자리수마다 총 필요한 자리수를 계산
if (tmp <= tmp_value) {
//몇번째 숫자인지 체크
int value = ceil((double)tmp / (double)(i + 1));
num += value;
string str_num = to_string(num);
if (num <= N) {
int index = tmp % (i + 1);
index +=i;
cout << str_num[index%(i+1)] << '\n';
break;
}
else { // 범위보다 숫자가 초과하면 -1을 출력한다.
cout << -1 << '\n';
break;
}
}
else {
tmp -= tmp_value;
num += (pow(10, i) * 9); //각 자리수마다 숫자 개수를 계속 더한다
}
}
return 0;
}
반응형
'[ Algorithm ] > [ BOJ ]' 카테고리의 다른 글
BOJ_18808 [ 스티커 붙이기] (0) | 2020.04.08 |
---|---|
BOJ_18809 [ Gaaaaaaaaaarden ] (0) | 2020.04.07 |
BOJ_17608 [ 막대기 ] (0) | 2020.03.17 |
BOJ_17609 [ 회문 ] (0) | 2020.03.17 |
BOJ_17610 [ 양팔저울 ] (0) | 2020.03.17 |
Comments