๐Ÿ› ๏ธBackend/Algorithm Problem Solving

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ] ๋ฐฑ์ค€(1009๋ฒˆ) - ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ

junbin2 2024. 11. 7. 03:14

[๋ฐฑ์ค€] ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๋ฌธ์ œ ( ๋ธŒ๋ก ์ฆˆ2 )

๋ฌธ์ œ
์žฌ์šฉ์ด๋Š” ์ตœ์‹  ์ปดํ“จํ„ฐ 10๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์–ด๋А ๋‚  ์žฌ์šฉ์ด๋Š” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ๋  ์ผ์ด ์ƒ๊ฒจ์„œ ๊ฐ ์ปดํ“จํ„ฐ์— 1๋ฒˆ๋ถ€ํ„ฐ 10๋ฒˆ๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , 10๋Œ€์˜ ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

- 1๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 1๋ฒˆ ์ปดํ“จํ„ฐ, 2๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 2๋ฒˆ ์ปดํ“จํ„ฐ, 3๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 3๋ฒˆ ์ปดํ“จํ„ฐ, ... ,
- 10๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 10๋ฒˆ ์ปดํ“จํ„ฐ, 11๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 1๋ฒˆ ์ปดํ“จํ„ฐ, 12๋ฒˆ ๋ฐ์ดํ„ฐ๋Š” 2๋ฒˆ ์ปดํ“จํ„ฐ, ...


์ด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ a^b๊ฐœ์˜ ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์žฌ์šฉ์ด๋Š” ๋ฌธ๋“ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋  ์ปดํ“จํ„ฐ์˜ ๋ฒˆํ˜ธ๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.
์ž…๋ ฅ
์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ์ •์ˆ˜ a์™€ b๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ a < 100, 1 ≤ b < 1,000,000)
์ถœ๋ ฅ
๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ์ปดํ“จํ„ฐ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
์˜ˆ์ œ ์ž…๋ ฅ ์˜ˆ์ œ ์ถœ๋ ฅ
5 ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜
1 6 1
3 7 7
6 2 6
7 100 1
9 635 9

 

๋ฌธ์ œ ํ’€์ด

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ์ปดํ“จํ„ฐ์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

(1) ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋จผ์ € ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋งŒํผ์˜ t์˜ ๊ฐ’์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด t๋งŒํผ ๋กœ์ง์„ ๋Œ๋ ค์•ผ ํ•œ๋‹ค.
(2) ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ์‹

1๋ฒˆ ๋ฐ์ดํ„ฐ -> 1๋ฒˆ ์ปดํ“จํ„ฐ

2๋ฒˆ ๋ฐ์ดํ„ฐ -> 2๋ฒˆ ์ปดํ“จํ„ฐ ...

10๋ฒˆ ๋ฐ์ดํ„ฐ -> 10๋ฒˆ ์ปดํ“จํ„ฐ

11๋ฒˆ ๋ฐ์ดํ„ฐ -> 1๋ฒˆ ์ปดํ“จํ„ฐ...

(3) ์ด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ a^b๊ฐœ์˜ ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ ธ์•ผ ํ•œ๋‹ค.

a = 2 , b = 4 ์ธ๊ฒฝ์šฐ 2^4 ์ด๋ฉฐ, 16 ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

1~16์„ ๊ฐ ์ปดํ“จํ„ฐ์— ์ €์žฅ์„ ํ•˜๊ฒŒ ๋˜๊ณ  ์กฐ๊ฑด์œผ๋กœ๋Š” 11๋ฒˆ๋ถ€ํ„ฐ๋Š” ๋‹ค์‹œ 1๋ฒˆ์— ์ €์žฅ์„ ํ•œ๋‹ค.

๊ฒฐ๊ณผ๋Š” ๋งˆ์ง€๋ง‰ ๊ฐ’์ธ 16์ด ๋“ค์–ด๊ฐ€๋Š” ์ปดํ“จํ„ฐ ๋ฒˆํ˜ธ๋กœ๋Š” 6๋ฒˆ์ด ๋œ๋‹ค.

(4) ๊ฒฐ๊ตญ ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์˜ 1์˜ ์ž๋ฆฌ ์ˆซ์ž์— ๋”ฐ๋ผ ๋“ค์–ด๊ฐ€๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

๊ทธ๋Ÿผ ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์„ ๊ตฌํ•œ ๋’ค ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด 1์˜ ์ž๋ฆฌ๋ฅผ ๊ตฌํ•˜๋ฉด ๋ ๊นŒ?

- ๊ฐ€๋Šฅ์€ ํ•˜์ง€๋งŒ, ์˜ˆ์ œ ์ž…๋ ฅ์œผ๋กœ๋Š” 7 100, 9 635์™€ ๊ฐ™์€ ์—„์ฒญ ํฐ ์ˆซ์ž ๋˜ํ•œ ํฌํ•จ์ด ๋˜์–ด์žˆ๋‹ค.

- ๊ฒฐ๊ตญ 7์˜ 100์Šน๊ณผ 9์˜ 635์Šน์€ ๋ง๋„ ์•ˆ๋˜๋Š” ์ˆซ์ž๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ ์ด๋‹ค. ( ์—ฐ์‚ฐ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. )

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์— ์กด์žฌํ•˜๋Š” ๊ทœ์น™๊ณผ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

2^1 -> 2 ( 1 = 4 × 0 + 1 ) -> 1

2^2 -> 4 ( 2 = 4 × 0 + 2 ) -> 2

2^3 -> 8 ( 3 = 4 × 0 + 3 ) -> 3

2^4 -> 16 ( 4 = 4 × 1 + 0 ) -> 4

2^5 -> 32

2^6 -> 64

2^7 -> 128

2^8 -> 256

(1) 1์˜ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ 2 , 4 , 8 , 6 ์œผ๋กœ ๋ฐ˜๋ณต์ด ๋œ๋‹ค. ( ๋‚˜๋จธ์ง€ ์ˆซ์ž ๋˜ํ•œ ๋ฐ˜๋ณต์ด ๋œ๋‹ค. )

๊ฒฐ๊ตญ ๋ฌธ์ œ์—์„œ๋Š” ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์˜ 1์˜ ์ž๋ฆฌ๋งŒ์„ ์›ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๋Œ€ํ•œ ์ˆซ์ž์˜ ์—ฐ์‚ฐ ์—†์ด๋„ ๊ทœ์น™์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

(2) ์ œ๊ณฑ์ˆ˜์™€ ๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์„ ํ•œ ๋’ค ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๊ฒŒ ๋˜๋ฉด ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์ด ๋ช‡์ธ์ง€ ์ธ๋ฑ์Šค๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์˜ 1์˜์ž๋ฆฌ -> 2, 4, 8, 6(๋ฐ˜๋ณต)

๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์˜ ๋‚˜๋จธ์ง€ -> 1, 2, 3, 4

(3) ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋ฉด ์ธ๋ฑ์Šค ๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜์˜ ๋ช‡๋ฒˆ์งธ ๊ฐ’์ด ๋งˆ์ง€๋ง‰ ๊ฐ’์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์ฝ”๋“œ๋กœ ๊ตฌํ˜„

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();
        StringBuilder result = new StringBuilder();

        for (int i = 0; i < t; i++) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            int computerNumber = getComputerNumber(a, b);

            result.append(computerNumber).append("\n");
        }

        System.out.print(result);
    }

    private static int getComputerNumber(int a, int b) {
        int lastDigit = a % 10;

        List<Integer> cycle = new ArrayList<>();
        int current = lastDigit;

        while (!cycle.contains(current)) {
            cycle.add(current);
            current = (current * lastDigit) % 10;
        }
        System.out.println(cycle);

        int index = (b % cycle.size() == 0) ? cycle.size() - 1 : (b % cycle.size()) - 1;
        int computerNumber = cycle.get(index);

        if (computerNumber == 0) {
            computerNumber = 10;
        }
        return computerNumber;
    }
}

(1) ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ’์„ List์— ๋‹ด์•„์ฃผ๊ธฐ

(2) ๋ฆฌ์ŠคํŠธ์—์„œ ํ•ด๋‹น ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ์˜ ์กฐ๊ฑด์„ ๊ฑธ์–ด ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค์ค€๋‹ค.

(3) ํ•ด๋‹น ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” ๋ฐ˜๋ณต๋˜๋Š” ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์„ ์ž„์˜๋กœ ์ œ๊ณฑํ•ด์ฃผ๋ฉด์„œ ๋ชจ๋“ˆ๋Ÿฌ๋ฅผ ํ†ตํ•ด 1์˜ ์ž๋ฆฌ๋งŒ ๋ฝ‘์•„์„œ ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„์ค€๋‹ค.

(4) ๋ฐ˜๋ณต๋ฌธ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค์Œ ์ˆ˜๊ฐ€ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ฒจ์žˆ์„ ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค.

(5) ์ œ๊ณฑ์˜ ์ˆ˜์™€ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๋ชจ๋“ˆ๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋ฉด ํ•ด๋‹น ๋‚˜๋จธ์ง€๋Š” ๊ฑฐ๋“ญ์ œ๊ณฑ๊ฐ’์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.

(6) ๋‚˜๋จธ์ง€๊ฐ€ 0์ผ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋“œ์‹œ ๋ฆฌ์ŠคํŠธ ์‚ฌ์ด์ฆˆ์— -1์„ ํ•ด ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋ฝ‘์•„์ค€๋‹ค.

(7) ์ตœ์ข…์ ์œผ๋กœ ๋ฆฌ์ŠคํŠธ์˜ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 0์ผ ๊ฒฝ์šฐ์—๋Š” 10๋ฒˆ ์ปดํ“จํ„ฐ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.