๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 10872 ํŒฉํ† ๋ฆฌ์–ผ ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 1. 23.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 10872๋ฒˆ ํŒฉํ† ๋ฆฌ์–ผ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ

์˜ˆ์ œ ์ž…๋ ฅ & ์ถœ๋ ฅ

ํ•ด๊ฒฐ๋ฒ•

์ด ๋ฌธ์ œ๋Š” ์žฌ๊ท€ ํ˜ธ์ถœ์˜ ์˜ˆ์—์„œ๋„ ๋ดค๋“ฏ, ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ๋ฌธ์ œ์ด๋‹ค.


ํ˜น์‹œ ๋ชจ๋ฅด๋‹ˆ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— ๋Œ€ํ•ด์„œ ์ฃผ์˜ํ•ด์„œ ๋ด๋ณด์ž.

์‹œ๊ฐ„ ๋ณต์žก๋„

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” n์ด ์ตœ๋Œ€ 12์ด๋ฉฐ ์žฌ๊ท€๋ฅผ n๋ฒˆ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์žฌ๊ท€๋กœ ๋“ค์–ด๊ฐ”์„ ๋•Œ ๋‹จ์ˆœ if ๊ฒ€์ฆ๋ฌธ๊ณผ ๋‚ด๋ถ€ ์žฌ๊ท€๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ ์ด๋ฏ€๋กœ o(n)์ด๋ผ๋Š” ๋ณต์žก๋„๊ฐ€ ๋‚˜์˜จ๋‹ค.


๊ทธ๋Ÿผ o(12) ์ด๋ฏ€๋กœ 1์ดˆ ๋‚ด์— ์ถฉ๋ถ„ํžˆ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

์ž…๋ ฅ ์ž๋ฃŒํ˜•

์ž…๋ ฅ์€ 12 ๊นŒ์ง€์ด๋ฉฐ ์˜ˆ์ œ ์ž…๋ ฅ์— ๋ณด๋ฉด 10!์ด 300๋งŒ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿผ ๋Œ€์ถฉ 12!์€ 3์–ต ~ 4์–ต ์ฏค์ด ๋  ๊ฒƒ์ด๋‹ค.


int ์ž๋ฃŒํ˜•์€ ์ •์ˆ˜๋ฅผ ์ตœ๋Œ€ 21์–ต์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋ถ„ํžˆ 12!์„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ข…๋ฃŒ ์กฐ๊ฑด

์žฌ๊ท€ํ•จ์ˆ˜์—์„œ๋Š” ์ข…๋ฃŒ ์กฐ๊ฑด์ด ๋น ์ง€๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์•„์ฃผ ์ง๊ฒฉ์œผ๋กœ ๋งž๊ฒŒ๋œ๋‹ค.


๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ข…๋ฃŒ ์กฐ๊ฑด์ด ํ•„์ˆ˜์ธ๋ฐ, ํŒฉํ† ๋ฆฌ์–ผ ํ•จ์ˆ˜์—์„œ 1!์€ 1์ด๋ฏ€๋กœ 1์„ ๋งŒ๋‚˜๋ฉด ์ข…๋ฃŒํ•œ๋‹ค๋Š” ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

๊ผญ ์ฃผ์˜ํ•ด์•ผํ•  ์˜ค๋‹ต ํ›„๋ณด

์—ฌ๊ธฐ ๋ฌธ์ œ์—์„œ 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜๋ผ๊ณ  ํ–ˆ๋‹ค.


ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€.


๊ทธ๋Ÿผ 0์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ 0์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ์ตœ์ดˆ ํ˜ธ์ถœ์ด ์•„๋งˆ factorial(0)์ด ๋œ๋‹ค. ๊ทธ๋Ÿผ ์ด๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ณธ๋‹ค๋ฉด 0 * factorial(-1) -1 * factorial(-2) ...์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๊ณ  StackOverFlow๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.


๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ž…๋ ฅ์ด 0์ผ ๋•Œ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€์‹œ์ผœ์•ผ ํ•œ๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

import java.io.*;

public class Main {

  public static void main(String[] args) throws IOException{

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int n = Integer.parseInt(br.readLine());

    bw.write(String.valueOf(factorial(n)));

    bw.flush();
    bw.close();
  }

  private static int factorial(int n) {
    if(n == 0 || n == 1) return 1; // ์ข…๋ฃŒ ์กฐ๊ฑด
    return n * factorial(n-1);
  }
}

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€