https://www.acmicpc.net/problem/1907
1907번: 탄소 화합물
첫째 줄에 세 정수 X1, X2, X3 (1 이상 10 이하)를 빈 칸을 사이에 두고 순서대로 출력한다. 이는 각각 M1, M2, M3의 계수가 된다. 만일 해가 둘 이상이라면 답을 세 자연수로 이루어진 수열으로 생각해
www.acmicpc.net
- 우선 +, = 을 없앤다.
- split으로 x1, x2, x3를 구한다.
- 분자의 단어를 하나씩 보면서,
단어가 CHO 중에 있으면 1을 추가하고,
숫자라면 변경 단어를 직전에 있는 단어에 숫자만큼 더해준다. - 그리고 계수는 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
'알고리즘 공부 > 브루트포스' 카테고리의 다른 글
[백준/브루트포스] 1476번: 날짜 계산 (0) | 2022.09.18 |
---|---|
[백준/브루트포스] 14426 접두사 찾기 (0) | 2022.04.04 |
[백준/브루트포스] 4970번 디지털 회로개론 (0) | 2022.03.23 |
[백준/브루트포스] 2993번 세 부분 (0) | 2022.03.11 |
[백준/브루트포스] 3085번 사탕 게임 (0) | 2022.03.11 |