본문 바로가기

백준

1907 탄소 화합물

아 처음에 조금 실수 한 것들이 있었다. 무조건 계수가 있는 줄 알았는데 아니었음.

 

그리고 문자열이라 파이썬으로 풀었는데 그래서 더 애먹었다. 낯설어 낯설다

 

구현은 처음에 C, H, O 개수 센 다음 1, 1, 1, ... 10, 10, 10까지 모든 경우 확인하면서 맞는 걸 확인해주면 된다.

 

파이썬으로 구현하면서 새로 배운 거

- int a[10] 이런 식으로 배열을 처음부터 할당받지 못하는 것 같다. [0 for i in range(10)] 이거나 아님 [0] * 3 이런 방법으로 해줘야 한다.

- 전역변수는 함수 안에서 읽기는 되지만 쓰기는 안 된다. global로 미리 선언해줘야 쓰기도 가능하다. 

 

헷갈리는구만

checknum = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
select = [0 for i in range(3)]
isStop = False

def dfs(cnt) :
    global isStop
    global select
    
    if isStop:
        return 
    
    if cnt == 3:
        checklist = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
        
        for i in range(3):
            for j in range(3):
                checklist[i][j] = count[i][j] * select[i]
        
        isAns = True
        for i in range(3):
            if checklist[0][i] + checklist[1][i] != checklist[2][i]:
                isAns = False
                break
        
        if isAns:
            isStop = True
            for i in range(3):
                print(select[i], end=" ")
        return 
    
    for i in range(10):
        select[cnt] = checknum[i]
        dfs(cnt + 1)
        


str = input()
list = str.replace('+', ' ').replace('=', ' ').split(' ')
list[0] = list[0] + ' '
list[1] = list[1] + ' '
list[2] = list[2] + ' '

count = []
for s in list:
    tmp = [0, 0, 0]
    
    for i in range(len(s)):
        if s[i].isdigit():
            continue
        
        num = 1
        if s[i] == 'C':
            if s[i+1].isdigit():
                num = int(s[i+1]) 
            tmp[0] += num
            
        elif s[i] == 'H':
            if s[i+1].isdigit():
                num = int(s[i+1]) 
            tmp[1] += num
            
        elif s[i] == 'O':
            if s[i+1].isdigit():
                num = int(s[i+1]) 
            tmp[2] += num
    
    count.append(tmp)
    
dfs(0)

'백준' 카테고리의 다른 글

3048 개미  (0) 2021.08.16
2960 에라토스테네스의 체  (0) 2021.08.16
1783 병든 나이트  (0) 2021.08.07
14881 물통 문제  (2) 2021.08.07
1676 팩토리얼 0의 개수  (0) 2021.08.07