๋ฐฑ์ค€/C++

[๋ฐฑ์ค€/C++] 1790๋ฒˆ ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ 2

yulee_to 2022. 7. 11. 16:23

๋ฐฑ์ค€ ๋กœ๊ณ 
๋ฐฑ์ค€

 

1790๋ฒˆ ์ˆ˜์ด์–ด์“ฐ๊ธฐ2


๐Ÿค”๋ฌธ์ œ ์ดํ•ด

1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ˆซ์ž๋ฅผ ์ด์–ด์จ์„œ ๋งŒ๋“  ์ˆ˜์˜ k๋ฒˆ์งธ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ!

๋ฌธ์ œ๊ฐ€ ์งง์€ ๋งŒํผ ๊ฐ„๋‹จํ–ˆ๋‹ค.


๐Ÿ’ก์ฒซ๋ฒˆ์งธ ์•„์ด๋””์–ด

๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ์„ ๋•Œ N์˜ ์ž๋ฆฟ์ˆ˜๊ฐ€ n์ผ ๋•Œ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜๋Š” 1*9 + 2*90 + 3*900 + ... (n-1)*((10^n -1)-(10^n-2))์— ๊ฐ€์žฅ ์ž‘์€ n์ž๋ฆฌ ์ˆ˜๋ถ€ํ„ฐ n๊นŒ์ง€๋ฅผ ๋”ํ•˜๋ฉด ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

k๋ฅผ ์ฐพ์„ ๋•Œ์—๋Š” k๊ฐ€ ํฌํ•จ๋˜๋Š” ๊ณณ์ด ๋ช‡ ์ž๋ฆฟ์ˆ˜์ผ ๋•Œ์ธ์ง€๋ฅผ ํŒŒ์•…ํ•ด์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ 10000000~9999999๊นŒ์ง€ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„ ์ œํ•œ์— ๊ฑธ๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ–ˆ๋‹ค.

 

 

๐Ÿ”ฅํ’€์ด๐Ÿ”ฅ

์ฒซ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ 

-> k๊ฐ€ ํฌํ•จ๋˜๋Š” ์ž๋ฆฟ์ˆ˜ ๊ตฌํ•˜๊ธฐ

๋‘๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ 

-> ํ•ด๋‹น ์ž๋ฆฟ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’~์ตœ๋Œ“๊ฐ’๊นŒ์ง€ total์— ์ž๋ฆฟ์ˆ˜๋ฅผ ๋”ํ•ด์ฃผ๋ฉด์„œ k๊ฐ€ ํฌํ•จ๋˜๋Š” ๋ฒ”์œ„๋ฅผ ์ฐพ๊ณ  total๊ณผ k๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์‹œ์ ์˜ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅ

 

1์˜ ์ž๋ฆฌ์˜ ๊ฒฝ์šฐ k๊ฐ€ n๋ณด๋‹ค ํฌ๋‹ค๋ฉด -1, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด k๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ๋”ฐ๋กœ ๋นผ์ฃผ์—ˆ๋‹ค.

 

 

โŒ์ฒซ๋ฒˆ์งธ~์„ธ๋ฒˆ์งธ ์ œ์ถœ(6%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค.)

ํ’€์ด ๋ฐฉ๋ฒ•๋Œ€๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ ๋‘๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์—์„œ k์˜ ๋ฒ”์œ„๋ฅผ ํ™•์ธํ•  ๋•Œ์™€ total์— ํ•ด๋‹น ์ž๋ฆฟ์ˆ˜๋งŒํผ ๋”ํ•ด์ฃผ๋Š” ์‹์—์„œ ํ˜„์žฌ ์ž๋ฆฟ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ž…๋ ฅ๋ฐ›์€ n์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋”ํ•ด์ค˜์„œ ํ‹€๋ ธ์—ˆ๋‹ค...ใ…Ž

 

โญ•๏ธ๋„ค๋ฒˆ์งธ ์ œ์ถœ(๋งž์•˜์Šต๋‹ˆ๋‹ค!!)

๋งž์ถ”๊ธด ํ–ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ด 1052ms~1053ms๊ฐ€ ๋–ด๋‹ค...

๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ 0ms์— ๋Œ€๋ถ€๋ถ„ ํ’€์—ˆ๊ธธ๋ž˜ ์กฐ๊ธˆ๋งŒ ๋” ์ƒ๊ฐํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.


๐Ÿ’ก๋‘๋ฒˆ์งธ ์•„์ด๋””์–ด

๋ญ”๊ฐ€ n์—์„œ k๊ฐ€ ํ•ด๋‹น๋˜๋Š” ์ž๋ฆฟ์ˆ˜-1๊นŒ์ง€์˜ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋นผ๋ณด๋ฉด ๋ญ”๊ฐ€ ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค!

n-total๋ฅผ ํ•ด์„œ ์ž๋ฆฟ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ณ , ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ–ˆ๋‹ค.

๋ชซ์€ ํ•ด๋‹น ์ž๋ฆฟ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’(ex. 2์ž๋ฆฌ์ธ ๊ฒฝ์šฐ 10)์— +๋ชซ๋งŒํผ ํ•ด์คฌ์„ ๋•Œ k ๋ฒ”์œ„์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๊ฐ€ ๋‚˜์™”๋‹ค. 

๋‚˜๋จธ์ง€๋Š” k ๋ฒ”์œ„์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž์˜ ๋ช‡๋ฒˆ์งธ ์ž๋ฆฌ๊ฐ€ k์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด์ฃผ์—ˆ๋‹ค.

 

โŒ์—ฌ์„ฏ๋ฒˆ์งธ~์ผ๊ณฑ๋ฒˆ์งธ ์ œ์ถœ(6%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค.)

๊ตฌํ˜„ํ•˜๋Š”๋ฐ์„œ ๋ง‰ํ˜€๋ฒ„๋ ธ๋”ฐ๐Ÿ™„

ํ•ด์•ผํ•  ์ผ์ด ์‚ฐ๋”๋ฏธ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค. ๋‚˜๋ž‘ ์•„์ด๋””์–ด๋Š” ๊ฐ™์€ ๊ฑฐ ๊ฐ™์€๋ฐ... 

 

 

โญ•๏ธ์—ฌ๋Ÿ๋ฒˆ์งธ ์ œ์ถœ(๋งž์•˜์Šต๋‹ˆ๋‹ค!!)

์•ž์œผ๋กœ ๋ฌธ์ œ ํ‘ธ๋Š” ์—ฐ์Šต์„ ๋” ๋งŽ์ด ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์ด ์‹ค๋ ฅ์œผ๋ก  ๋‹ค์Œ ํ•™๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ํž˜๋“ค๋“ฏ^^;;

 


 

1790๋ฒˆ ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ 2

 

์•„๋ž˜๋Š” ์ฒซ๋ฒˆ์งธ ์•„์ด๋””์–ด๋กœ ์ œ์ถœํ•œ ์ฝ”๋“œ์ด๋‹ค. 

//
// Created by ๊น€์œ ๋ฆฌ on 2022/07/11.
//
#include <iostream>
#include <math.h>

using namespace std;

long long n, k;
long long total;

int main() {
    cin.tie(NULL);
    ios::sync_with_stdio(false);
    cin >> n >> k;
    string str = to_string(n);
    long long i;
    for (i = 1; i <= str.size(); i++) {
        if (total < k && total + i * ((long long) pow(10, i) - (long long) pow(10, i - 1)) >= k) {
            break;
        } else {
            total += i * ((long long) pow(10, i) - (long long) pow(10, i - 1));
        }
    }
    if (total == 0) {
        if (k > n) {
            cout << -1;
        } else {
            cout << k;
        }
        return 0;
    }
    for (int j = pow(10, i - 1); j <= n; j++) {
        string num = to_string(j);
        if (total < k && total + num.size() >= k) {
            for (int l = 0; l < num.size(); l++) {
                total++;
                if (total == k) {
                    cout << num[l];
                    return 0;
                }
            }
        } else {
            total = total + num.size();
        }
    }
    cout << -1;
    return 0;


}

 

728x90