Post

๐Ÿงฉ Baekjoon 14626 - ISBN

๐Ÿงฉ Baekjoon 14626 - ISBN

๋ฌธ์ œ

ISBN(International Standard Book Number)์€ ์ „ ์„ธ๊ณ„ ๋ชจ๋“  ๋„์„œ์— ๋ถ€์—ฌ๋œ ๊ณ ์œ ๋ฒˆํ˜ธ๋กœ, ๊ตญ์ œ ํ‘œ์ค€ ๋„์„œ๋ฒˆํ˜ธ์ด๋‹ค. ISBN์—๋Š” ๊ตญ๊ฐ€๋ช…, ๋ฐœํ–‰์ž ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ์œผ๋ฉฐ 13์ž๋ฆฌ์˜ ์ˆซ์ž๋กœ ํ‘œ์‹œ๋œ๋‹ค. ๊ทธ์ค‘ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋Š” ์ฒดํฌ๊ธฐํ˜ธ๋กœ ISBN์˜ ์ •ํ™•์„ฑ ์—ฌ๋ถ€๋ฅผ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž์ด๋‹ค. ์ด ์ฒดํฌ๊ธฐํ˜ธ๋Š” ์ผ๋ จ๋ฒˆํ˜ธ์˜ ์•ž์—์„œ๋ถ€ํ„ฐ ๊ฐ ์ž๋ฆฌ๋งˆ๋‹ค ๊ฐ€์ค‘์น˜ 1, 3, 1, 3โ€ฆ. ๋ฅผ ๊ณฑํ•œ ๊ฒƒ์„ ๋ชจ๋‘ ๋”ํ•˜๊ณ , ๊ทธ ๊ฐ’์„ 10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜๋„๋ก ๋งŒ๋“œ๋Š” ์ˆซ์ž m์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ˆ˜ํ•™์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ISBN์ด abcdefghijklm ์ผ ๋•Œ, a+3b+c+3d+e+3f+g+3h+i+3j+k+3l+m โ‰ก 0 (mod 10)
  2. ์ฆ‰, ์ฒดํฌ๊ธฐํ˜ธ m = 10 - (a+3b+c+3d+e+3f+g+3h+i+3j+k+3l) mod 10 ์ด๋‹ค.
  3. ๋‹จ, 10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 0์ผ ๊ฒฝ์šฐ ์ฒดํฌ๊ธฐํ˜ธ๋Š” 0์ด๋‹ค.

์ „๋ถ๋Œ€ํ•™๊ต ์ค‘์•™๋„์„œ๊ด€์—์„œ ์‚ฌ์„œ๋กœ ์ผํ•˜๊ณ  ์žˆ๋Š” ์˜ํ›ˆ์ด๋Š” ์ฑ… ์ •๋ฆฌ๋ฅผ ํ•˜๋‹ค๊ฐ€ ๊ฐœ๊ตฌ์Ÿ์ด ๊ด‘ํ˜„์ด์— ์˜ํ•ด์„œ ISBN์ด ํ›ผ์†๋œ ๋„์„œ๋“ค์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๊ด‘ํ˜„์ด๋•Œ๋ฌธ์— ์•ผ๊ทผํ•ด์•ผ ํ•˜๋Š” ๋ถˆ์Œํ•œ ์˜ํ›ˆ์ด๋ฅผ ์œ„ํ•ด์„œ ์†์ƒ๋œ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ์ฐพ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด์ฃผ์ž.

์ž…๋ ฅ

ISBN 13์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค. ํ›ผ์†๋œ ์ˆซ์ž๋Š” *๋กœ ํ‘œ์‹œํ•œ๋‹ค. (ํ›ผ์†๋œ ์ผ๋ จ๋ฒˆํ˜ธ๋Š” ์ฒดํฌ๊ธฐํ˜ธ๋ฅผ ์ œ์™ธํ•œ ๋ฌด์ž‘์œ„ ํ•œ ์ž๋ฆฌ์ด๋‹ค.)

์ถœ๋ ฅ

ํ›ผ์†๋œ ์ˆซ์ž *์— ์•Œ๋งž์€ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ

โœ… ์ž…๋ ฅ 1

1
9788968322*73

โœ… ์ถœ๋ ฅ 1

1
2

์ž‘์„ฑ ์ฝ”๋“œ

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
31
32
33
34
35
36
37
38
39
40
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
  
public class Main {  
	public static void main(String[] args) throws IOException {  
		// 1. ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”  
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
		String isbn = br.readLine();  
		int result;  
		int missingWeight = 0;  
		int checkDigit = isbn.charAt(12) - '0';  
		int r = 0;  
		
		// 2. '*'๋ฅผ ์ œ์™ธํ•œ ๊ฐ€์ค‘์น˜ ๋ฐ˜์˜ ํ•ฉ ๊ณ„์‚ฐ  
		for (int i = 0; i < 12; i++) {  
			char c = isbn.charAt(i);  
			int weight = (i % 2 == 0) ? 1 : 3;  
			
			if ('*' == isbn.charAt(i)) {  
				missingWeight = weight;  
			} else {  
				r += (c - '0') * weight;  
			}  
		}  
		
		// 3. '*' ์ž๋ฆฌ ๊ฐ’ ๊ณ„์‚ฐ  
		int mod = (10 - (r + checkDigit) % 10) % 10;  
		if (missingWeight == 1) {  
			// ๋ชจ๋“ˆ๋Ÿฌ ์—ญ์› ์ฒ˜๋ฆฌ ๋ถˆํ•„์š”  
			result = mod;  
		} else {  
			// ๋ชจ๋“ˆ๋Ÿฌ ์—ญ์› ์ฒ˜๋ฆฌ ๋ฐ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ ํ•„์š”  
			result = (7 * mod) % 10;  
		}  
		
		// 4. ์ถœ๋ ฅ  
		System.out.println(result);  
	}  
}
  • weight๊ฐ€ 3์ผ ๊ฒฝ์šฐ 3x โ‰ก โˆ’(r + checkDigit)์ด๋ฏ€๋กœ ๋ชจ๋“ˆ๋Ÿฌ ์—ญ์› ๋ฐ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ๋ชจ๋“ˆ๋Ÿฌ ์—ญ์›์ด๋ž€ ์–ด๋–ค ์ˆ˜ a๊ฐ€ ์žˆ์„ ๋•Œ, a์— ๊ณฑํ•ด์„œ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด ๋˜๋Š” ์ˆ˜ b๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ฆ‰, 3์— ๋Œ€ํ•œ ๋ชจ๋“ˆ๋Ÿฌ ์—ญ์›์€ 7์ด๋‹ค.
This post is licensed under CC BY 4.0 by the author.