2745번 - 진법 변환

예제 분석 :
36진법 수 ZZZZZ 를 10진법으로 바꾸는 식 :
35x36^4 + 35x36^3 + 35x36^2 + 35x36^1 + 35x36^0
풀이 알고리즘 :
1-1. N의 타겟 자릿수의 해당하는 것이 1~9 숫자면 그대로 매핑
1-2. N의 타겟 자릿수의 해당하는 것이 A~Z 알파벳이면 숫자로 매핑하기.
2. N의 타겟 자릿수의 따라 36의 지수승을 곱해주기.
는 알겠는데 코드로 변환하는 것을 고민하다가 GPT 돌렸다.
# 입력 받기
N, B = input().split() # N: 문자열, B: 진법 (정수로 변환 필요)
B = int(B)
# 결과 초기화
result = 0
# 각 자릿수를 순회하며 변환
for i in range(len(N)):
char = N[i]
# 숫자(0~9) 처리
if char.isdigit():
value = int(char)
# 알파벳(A~Z) 처리
else:
value = ord(char) - 55
# 10진법 변환 (자릿수에 따른 가중치 적용)
result = result * B + value
# 출력
print(result)
ord 함수() : 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환합니다.
2720번: 세탁소 사장 동혁

하나씩 넣어보는 그리디 문제.
T = int(input()) // 테스트 케이스의 수 입력받음.
for t in range(T): // 테스트 케이스의 수만큼 반복.
C = int(input()) // 거스름돈 센트 입력 받기.
for i in [25,10,5,1]: // 쿼터, 다임, 니켈, 페니 네개의 리스트 선언 및 반복
print(C//i,end=' ') // 하나씩 나눠 몫 계산.
C = C%i // 나눈 나머지를 C로 다시 재선언.
2292번 : 벌집

규칙 찾기
1
1 + 6 = 7
1 + 6 + 12 = 19
1 + 6 + 12 + 18 = 37
1 + 6 + 12 + 18 + 24 = 61
이런식으로 처음값은 1 이고 6의 배수 만큼 더해지는 규칙을 발견했지만
해당 규칙을 이용하는 방법은 생각해내지 못해 다른 블로그 코드를 참조했다.
num = int(input())
numbox = 1 //현재까지 카운트된 방의 총 개수
cnt = 1 //한개의 둘레를 '층'이라고 표현했을 때 층의 수
while num > numbox: // 사용자가 입력한 num이 현재까지 카운트된 방의 총 개수보다 크면 반복. 작아질때 까지 반복함.
numbox += 6 * cnt // 한번 반복할때마다 numbox가 6의 배수만큼 커짐
cnt += 1 //한번 반복할때마다 층을 하나씩 더해줌.
print(cnt)