๊ธฐ๋ก๋ฐฉ

BOJ_15652 : N๊ณผ M (4) ๋ณธ๋ฌธ

CodingTest/Java

BOJ_15652 : N๊ณผ M (4)

Soom_1n 2022. 12. 11. 10:29

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

15652๋ฒˆ: N๊ณผ M (4)

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆ˜ ์ค‘์—์„œ M์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๊ฐ™์€ ์ˆ˜๋ฅผ ๊ณจ๋ผ๋„ ๋˜์ง€๋งŒ ์ถœ๋ ฅ์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด์–ด์•ผ ํ•œ๋‹ค. ( == ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ)
  • ์žฌ๊ท€ํ˜•์‹์œผ๋กœ ๋ฐฑํŠธ๋ž˜ํ‚น์ด ํ•„์š”ํ•œ๋ฐ, ์Šคํƒ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();

        Stack<Integer> stack = new Stack<>();
        stack.push(1);

        while (!stack.isEmpty()) {
            if (stack.size() == m) {
                for (int i : stack) {
                    System.out.print(i + " ");
                }
                System.out.println("");

                while (!stack.isEmpty()) {
                    int temp = stack.pop();
                    if (temp + 1 <= n) {
                        stack.push(temp + 1);
                        break;
                    }
                }
            }
            else stack.push(stack.peek());
        }
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์žฌ๊ท€ํ˜•์‹์œผ๋กœ ์ˆ˜๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ์Šคํƒ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.
  • ์Šคํƒ์˜ ์›์†Œ๊ฐ€ m๊ฐœ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ์™€ ๊ฐ™์€ ๊ฐ’์„ pushํ•œ๋‹ค.
  • ์Šคํƒ์˜ ์›์†Œ๊ฐ€ m๊ฐœ๋ผ๋ฉด, ์›์†Œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    • ์ถœ๋ ฅ ํ›„ popํ•œ ์›์†Œ์— +1 ํ•˜๊ณ  pushํ•œ๋‹ค.
    • +1 ํ•œ ์ˆ˜๊ฐ€ m์„ ๋„˜์œผ๋ฉด ๋‹ค์Œ ์›์†Œ๋ฅผ popํ•œ๋‹ค.
    • popํ•  ์›์†Œ๊ฐ€ ๋‚จ์ง€ ์•Š์•˜๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • N๊ณผ M ์‹œ๋ฆฌ์ฆˆ๋ฅผ ํ’€๋ฉฐ ์žฌ๊ท€ ๋ฉ”์†Œ๋“œ์— ์ต์ˆ™ํ•ด์ ธ์„œ ์ด๋ฒˆ์—” ์Šคํƒ์œผ๋กœ ํ’€๊ณ ์ž ํ–ˆ๋Š”๋ฐ, ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋‹ฌ๋ฆฌํ•˜๋‹ˆ ์กฐ๊ธˆ ์–ด๋ ต๊ฒŒ ๋Š๊ปด์กŒ๋‹ค.
  • ์Šคํƒ์˜ ์›์†Œ๋ฅผ ๋ฐ”๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์—†์–ด์„œ ์ถœ๋ ฅ์„ ์œ„ํ•œ ๋‹ค๋ฅธ ArrayList๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฐ’์„ ์ฃผ๊ณ ๋ฐ›๊ณ  ํ•ด์•ผํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ, ์‹œํ—˜์‚ผ์•„ for-each๋ฌธ์œผ๋กœ ์Šคํƒ ์›์†Œ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋‹ˆ ๊ฐ€๋Šฅํ•ด์„œ ์ด ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ๋‹ค.
  • java์˜ Stackํด๋ž˜์Šค๋Š” ์›์†Œ๋ฅผ ๊บผ๋‚ด๊ฑฐ๋‚˜ ๋„ฃ์„๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ์ด๋ฆ„์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„ ์•Œ์•„๋ณด์•˜๋‹ค.
    • ํฌ์ŠคํŒ… ๋‚ด์šฉ 
      • push()๋Š” stack์—์„œ ์ œ๊ณต, add()๋Š” List์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
      • push()์˜ ๋ฆฌํ„ด๊ฐ’์€ <E>์ด๊ณ , add()์˜ ๋ฆฌํ„ด๊ฐ’์€ boolean์ด๋‹ค.
    • <E>๋Š” ๋ฌด์—‡์ธ๊ฐ€ ๋‹ค์‹œ ์ฐพ์•„๋ณด์•˜๋‹ค. (ํฌ์ŠคํŒ…)
      • Genericํ˜•ํƒœ : ๊ฐ€์ƒ์˜ ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ
      • ๋”ฐ๋ผ์„œ Stack<E>์—์„œ ์„ ์–ธํ•œ ์ž๋ฃŒํ˜•์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ
    • ์ฝ”๋“œ์˜ psuh๋ฅผ println()์œผ๋กœ ๊ฐ์‹ธ๋ณด๋‹ˆ, ์Šคํƒ์— psuh()๋กœ ๋„ฃ์€ ๊ฐ’์„ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•ด์„œ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

โ€‹

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_15351 : ์ธ์ƒ ์ ์ˆ˜  (0) 2022.12.14
BOJ_15654 : N๊ณผ M (5)  (0) 2022.12.14
BOJ_15651 : N๊ณผ M (3)  (0) 2022.12.10
BOJ_15650 : N๊ณผ M (2)  (0) 2022.12.09
BOJ_15649 : N๊ณผ M (1)  (0) 2022.12.08