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

 

1907번: 탄소 화합물

첫째 줄에 세 정수 X1, X2, X3 (1 이상 10 이하)를 빈 칸을 사이에 두고 순서대로 출력한다. 이는 각각 M1, M2, M3의 계수가 된다. 만일 해가 둘 이상이라면 답을 세 자연수로 이루어진 수열으로 생각해

www.acmicpc.net

  1. 우선 +, = 을 없앤다.
  2. split으로 x1, x2, x3를 구한다.
  3. 분자의 단어를 하나씩 보면서,
    단어가 CHO 중에 있으면 1을 추가하고,
    숫자라면 변경 단어를 직전에 있는 단어에 숫자만큼 더해준다.
  4. 그리고 계수는 1~9까지 이므로, 9*9*9 번의 반복문을 통해서 답을 찾는다.

 

import sys

input = sys.stdin.readline


def count(x):
    l = [0,0,0] #c,h,o
    for i in range(len(x)):
        num = 1
        ele = x[i]
        if ele.isdigit():
            num = int(ele) -1 
            ele = x[i-1]

        if ele=="C": l[0] += num
        elif ele=="H" : l[1] += num
        elif ele=="O" : l[2] += num

    return l

word = input().strip()

#+,= 지우기
symbols = ['+','=']

for i in symbols:
    word = word.replace(i,' ')

x1,x2,x3 = word.split()

#개수 세기
x1 = count(x1)
x2 = count(x2)
x3 = count(x3)

#계수 찾기
flag = False
for i in range(1,10):
    for j in range(1,10):
        for k in range(1,10):
            
            x = [m*i for m in x1]
            y = [m*j for m in x2]
            z = [m*k for m in x3]

            new = [x_t + y_t for x_t,y_t in zip(x,y)]
            
            if new == z:
                print(i,j,k)
                flag = True
                break
        if flag: break
    if flag: break

+ Recent posts