https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd
아이디어
- 입력 받은 2진수를 하나의 원소를 바꿔 10진수로 변환하여 set에 집에 넣는다.
- 예를 들어 1010이면 처음엔 1을 0으로 바꿔 0010을 10진수로 바꿔 set에 넣는다.
- 같은 방식으로 3진수를 요소가 0이면 1, 2로 바꾸고 10진수로 만들어준다.
- 3진수에서 바꾼 10진수가 set안에 있다면 출력하고 종료한다.
풀이
def solve():
tmp = '012'
for k in range(3):
for i in range(len(tri_num)):
tri_num_copy = tri_num[:]
if tri_num[i] != tmp[k]:
tri_num_copy[i] = (int(tmp[k])+1)%3
val2 = int(''.join(map(str, (tri_num_copy))), 3)
if val2 in bin_ten_set:
return print(f'#{tc}', val2)
T = int(input())
for tc in range(1, T+1):
tmp_bin = input()
tmp_tri = input()
bin_num = []
tri_num = []
for _ in range(len(tmp_bin)):
bin_num.append(int(tmp_bin[_]))
for _ in range(len(tmp_tri)):
tri_num.append(int(tmp_tri[_]))
bin_ten_set = set()
for i in range(len(bin_num)):
# bin_num_copy = bin_num[:]
if bin_num[i] == 0:
change_bin = bin_num[:i]+[1]+bin_num[i+1:]
val = ''.join(map(str, (change_bin)))
bin_ten_set.add(int(val, 2))
elif bin_num[i] == 1:
change_bin = bin_num[:i] + [0] + bin_num[i + 1:]
val = ''.join(map(str, (change_bin)))
bin_ten_set.add(int(val, 2))
solve()
'SWEA' 카테고리의 다른 글
SWEA 2819 격자판의 숫자 이어 붙이기 (파이썬) (0) | 2022.09.23 |
---|---|
SWEA 1486 장훈이의 높은 선반 (파이썬) (1) | 2022.09.23 |
SWEA 2117 홈 방범 서비스 (파이썬) (0) | 2022.09.16 |
SWEA 1861 정사각형 방 (파이썬) (0) | 2022.09.16 |
SWEA 4615 재미있는 오셀로 게임 (파이썬) (0) | 2022.09.16 |