백준 2745번 일반 수학 1 python

kimminjunnn·2025년 1월 8일

알고리즘

목록 보기
6/311

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)
profile
Frontend Engineers

0개의 댓글