서두르지 말고 쉬지 말자

백준 14626번 ISBN (C++) 본문

코딩 공부/Baekjoon Problem Solving

백준 14626번 ISBN (C++)

philos 2025. 7. 24. 15:06

solved.ac 티어 : 브론즈 1

문제 유형 : 수학, 구현, 브루트포스 알고리즘, 사칙 연산

문제 해결 소감 : 문제유형과 출제 의도에 맞게 잘 푼 것 같다.

문제 해결 전략 : 문제에서 수식이 제시되어 있어서 해당 수식을 만족할때 까지 빈인덱스값을 변경하는 방법으로 문제를 해결했다.

#include <iostream>
#include <string>
std::string s;
int arr[13];
int index = 0;
int solve(int *arr, int index);
int main() {
  std::cin >> s;
  for (int i = 0; i < 13; i++) {
    if (s[i] != '*') {
      arr[i] = s[i] - '0';
    } else {
      index = i;
      arr[index] = 0;
    }
  }
  std::cout << solve(arr, index);
  return 0;
}

int solve(int *arr, int index) {
  int r = arr[0] + arr[2] + arr[4] + arr[6] + arr[8] + arr[10];
  int l = 3 * (arr[1] + arr[3] + arr[5] + arr[7] + arr[9] + arr[11]);
  int m = arr[12];
  while ((r + l + m) % 10 != 0) {
    arr[index]++;
    r = arr[0] + arr[2] + arr[4] + arr[6] + arr[8] + arr[10];
    l = 3 * (arr[1] + arr[3] + arr[5] + arr[7] + arr[9] + arr[11]);
    m = arr[12];
  }
  return arr[index];
}
반응형