Home > Algorithm > BOJ > [BOJ] 14626๋ฒˆ ISBN

[BOJ] 14626๋ฒˆ ISBN
C++ ๋ฐฑ์ค€ BOJ ์•Œ๊ณ ๋ฆฌ์ฆ˜ Algorithm

๐Ÿ”— ๋ฌธ์ œ

https://www.acmicpc.net/problem/14626


๐Ÿ“Œ ๋ฌธ์ œ ์š”์•ฝ

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

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


๐Ÿ’ก ์ ‘๊ทผ ๋ฐฉ๋ฒ•

์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ณ„์‚ฐ์‹์„ ๋ฐ”๊ฟ” ์ ์šฉํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
๋ฌธ์ œ์— ์ „์ฒด ๊ณ„์‚ฐ์‹์€ ๋‚˜์™€์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด๋งŒ ์ž˜ ์ ์šฉํ•ด์ฃผ๋ฉด ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ


โš ๏ธ ์ฒ˜์Œ์— ํ–ˆ๋˜ ์‹ค์ˆ˜

-


๐Ÿ’ป ์ฝ”๋“œ

#include <iostream>
#include <string>
using namespace std;

string serial;

int main() {
  cin >> serial;

  int size = serial.size();
  int mul3 = false;
  int ans = 0;
  bool targetMul3 = false;
  bool checkSign = true;
  for (int i = 0; i < size - 1; ++i) {

    if (serial[i] == '*') {
      targetMul3 = mul3;
      mul3 = !mul3;
      checkSign = false;
      continue;
    }
    int val = serial[i] - '0';

    if (mul3)
      ans += val * 3;
    else
      ans += val;

    mul3 = !mul3;
  }

  int ret = 0;
  if (checkSign)
    ret = (10 - (ans % 10)) % 10;
  else {
    ret = (10 - (serial[size - 1] - '0')) % 10;

    int mul = targetMul3 ? 3 : 1;
    for (int i = 0; i <= 9; ++i) {
      if (ret == ((i * mul) + ans) % 10) {
        ret = i;
        break;
      }
    }
  }

  cout << ret;
  return 0;
}