난이도 : D4
문제번호 : 4366
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
삼성은행의 신입사원 정식이는 실수를 저질렀다. 은행 업무가 마감되기 직전인 지금, 송금할 금액을 까먹고 말았다. 하지만 다행스럽게도 정식이는 평소 금액을 2진수와 3진수의 두 가지 형태로 기억하고 다니며, 기억이 명확하지 않은 지금조차 2진수와 3진수 각각의 수에서 단 한 자리만을 잘못 기억하고 있다는 것만은 알고 있다. 예를 들어 현재 기억이 2진수 1010과 3진수 212을 말해주고 있다면 이는 14의 2진수인 1110와 14의 3진수인 112를 잘못 기억한 것이라고 추측할 수 있다. 정식이는 실수를 바로잡기 위해 당신에게 부탁을 하였다. 정식이가 송금액을 추측하는 프로그램을 만들어주자. ( 단, 2진수와 3진수의 값은 무조건 1자리씩 틀리다. 추측할 수 없는 경우는 주어지지 않는다. ) |
입력
10개 이하의 테스트 케이스가 주어진다. |
출력
원래 송금하기로 하였던 금액을 케이스마다 한 줄에 하나씩 출력한다. |
예시
입력 | 출력 |
1 1010 212 |
#1 14 |
2. 문제풀이
2진수와 3진수가 1비트씩 바뀌었기때문에 바뀔수 있는 경우의 수를 만들었다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#D4 4366 정식이의 은행업무
#2진수와 3진수를 비교
def equleCheck(a, b):
num_a = 0
num_b = 0
k = 0
for i in range(len(a)-1, -1, -1):
num_a += int(a[i])*(2**k)
k+=1
k = 0
for i in range(len(b)-1, -1, -1):
num_b += int(b[i])*(3**k)
k+=1
if num_a == num_b:
return True, num_a
return False, num_a
T = int(input())
for t in range(1, T + 1):
num_2 = list(input())
num_3 = list(input())
list1 = []
list2 = []
#2진수가 틀린 경우의수 찾기
for i in range(len(num_2)):
temp = num_2[:]
if temp[i] == '0': temp[i] = '1'
else: temp[i] = '0'
list1.append(''.join(temp))
#진수가 틀린 경우의 수 찾기
for i in range(len(num_3)):
temp = num_3[:]
if temp[i] == '0':
temp[i] = '1'
list2.append(''.join(temp))
temp[i] = '2'
list2.append(''.join(temp))
elif temp[i] == '1':
temp[i] = '0'
list2.append(''.join(temp))
temp[i] = '2'
list2.append(''.join(temp))
else:
temp[i] = '0'
list2.append(''.join(temp))
temp[i] = '1'
list2.append(''.join(temp))
result = 0
#경우의 수를 각각 비교하면서 찾기
for a in list1:
for b in list2:
check, result = equleCheck(a, b)
if check:
break
else:
continue
break
print('#{} {}'.format(t, result))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
점심 식사시간 Python(SW Expert Academy, SWEA) (1) | 2020.06.28 |
---|---|
수영장 Python(SW Expert Academy, SWEA) (0) | 2020.06.27 |
추억의 2048게임 Python(SW Expert Academy, SWEA) (2) | 2020.06.24 |
쇠막대 자르기 Python(SW Expert Academy, SWEA) (0) | 2020.06.23 |
최소 이동 거리 Python(SW Expert Academy, SWEA) (0) | 2020.06.22 |
댓글