아 처음에 조금 실수 한 것들이 있었다. 무조건 계수가 있는 줄 알았는데 아니었음.
그리고 문자열이라 파이썬으로 풀었는데 그래서 더 애먹었다. 낯설어 낯설다
구현은 처음에 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 |