난이도 : D4
문제번호 : 4366
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
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 |
댓글