For Programmer
SWEA 4366번 파이썬 문제풀이(정식이의 은행 업무) 본문
728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd
이 문제는 각 자리수를 돌면서 현재와 다른 값(예를 들어 첫번째 자리가 0 이면 2진수는 1로 3진수는 1 또는 2로 바꾸어 보며) 모든 자리수를 해당방식으로 검사하여 10진수로 변환하여 그중 공통된 한개만 뽑아내는 식으로 처리하였다.) 뽑아 낼때는 set의 교집합 연산자를 이용하였다.
# 입력받은 해당 진수의 값을 10진수로 변환
def convert(num, b):
return int(num, base=b)
# 각 자리수를 바꿔 검사해보는 함수
def check(bit, b, order):
temp_bit = list(bit)
for i in range(len(bit)):
init = temp_bit[i]
for j in range(b):
if temp_bit[i] == str(j):
for k in range(b):
if str(j) == str(k):
continue
temp_bit[i] = str(k)
result[order].add(convert(''.join(temp_bit), b))
temp_bit[i] = init
T = int(input())
for tc in range(1, T + 1):
bit = input() # 2진수 입력
three_bit = input() # 3진수 입력
result = [set(), set()] # 각진수의 자리수를 바꿔보며 10진수를 저장할 set 2개를 리스트에 저장
check(bit, 2, 0) # 2진수 변환
check(three_bit, 3, 1) # 3진수 변환
print(f'#{tc}', *result[0] & result[1]) # 두개의 교집합을 출력
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 11659번 파이썬 문제풀이(구간 합 구하기 4) (0) | 2022.03.27 |
---|---|
백준 2250번 파이썬 문제풀이(트리의 높이와 너비) (0) | 2022.03.25 |
백준 11437번 파이썬 문제풀이(LCA) (0) | 2022.03.23 |
백준 1967번 파이썬 문제풀이(트리와 지름) (0) | 2022.03.23 |
백준 15681번 파이썬 문제풀이(트리와 쿼리) (0) | 2022.03.23 |
Comments