반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd
정식이의 은행업무 문제
2진법의 숫자 중에 자리 수 하나를 바꾼 숫자를 10진법으로 바꾼 숫자들 중, 3진법의 숫자 중에 자리 수 하나를 바꾼 숫자의 10진법과 일치하는 것이 있는지 찾는 문제
구현 문제로 완전 탐색을 하면 된다.
⚙️ 내가 푼 정답 코드
T = int(input())
for case in range(1, T+1):
b = input() # 2진수
t = input() # 3진수
ts = ['0', '1', '2'] # 3진수 모음
bs = [] # 2진수를 10진수로 바꾼 값 모음
for i in range(len(b)): # 가능한 2진수 찾기
if b[i] == '0':
temp = b[:i] + '1' + b[i+1:]
bs.append(int(temp, 2)) # 10진수로 변환해서 모으기
else:
temp = b[:i] + '0' + b[i+1:]
bs.append(int(temp, 2))
for i in range(len(t)):
for j in ts:
if t[i] != j:
temp = t[:i] + j + t[i+1:] # 3진수도 하나씩 찾아보자
if int(temp, 3) in bs: # 3진수를 10진수로 바꿔서 2진수 10진수로 바꾼거에 있으면
print(f'#{case} {int(temp, 3)}') #정답
📌문제 접근 포인트
1. 2진법과 3진법 수를 변형 후 10진법으로 만들고 일치하는 숫자를 찾아야 한다. 3진법보단 2진법이 경우의 수가 더 적으니 2진법을 먼저 변환을 해주자.
2. 2진수를 한 칸씩 0 or 1의 변환을 해주고, 그때 변환한 숫자를 모아주자.
3. 3진수도 마찬가지로 하나씩 변환 해주고, 2진수의 모음 중에 3진수가 일치하는 게 있는지 체크해주자.
4. 있으면 그때 수를 출력하면 끝
반응형
'알고리즘 풀이 > SW Expert Academy' 카테고리의 다른 글
[SWEA] 베이비진 게임 문제(python) (0) | 2023.03.31 |
---|---|
[SWEA] 부분 수열의 합 (python) (0) | 2023.03.31 |
[SWEA] 장훈이의 높은 선반 (python) (0) | 2023.03.31 |
[SWEA] 격자판의 숫자 이어 붙이기 (python) (0) | 2023.03.31 |
[SWEA] 수영장 (python) (0) | 2023.03.31 |
댓글