Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- Australian Voting
- BOJ
- 2085
- 숫자 맞추기
- Fitmong
- God of Mine
- AI
- 홀수 홀릭 호석
- 알고리즘
- blobaww
- 7626
- barin tumor
- 하이터치☆메모리
- 24501
- MemoSprint
- k개 사과 트리 노드만으로 배를 최대로 수확하기
- 2494
- 소마
- 백준
- paper
- 34031
- TaskQ
- 소프트웨어마에스트로
- 개발
- TripGuard
- 25977
- Classification
- 1인개발
- 25195
- 외국어이름
Archives
- Today
- Total
iwanabethedev 님의 블로그
[boj 2085] 진법 본문
입력으로 들어오는 숫자들을 쪼개가면서 진법으로 표현할 수 있는가 하는 문제입니다.
문제를 잘 읽어봐야 하는게, "불필요한 0이 사용되는 경우는 세지 않는다"의 의미가 헷갈려서 틀릴 수 있을 것 같습니다.
그 외에는, 뒷자리 숫자를 하나씩 늘려가며 경우의 수를 카운트했습니다.
더보기
import sys
input = sys.stdin.readline
def solve():
string = input().rstrip()
cnt = 0
length = len(string)
for idx in range(1, length):
MOD = string[length-idx:length]
if len(str(int(MOD))) != len(MOD) or int(MOD) == 0: continue
MOD = int(MOD)
dp = [0] * (length-idx)
for i in range(1, length-idx+1):
if len(str(int(string[:i]))) != len(string[:i]): continue
if int(string[:i]) < MOD: dp[i-1] += 1
if i == length-idx:
cnt += dp[-1]
continue
for j in range(1, i+1):
if len(str(int(string[i-j+1:i+1]))) == len(string[i-j+1:i+1]) and int(string[i-j+1:i+1]) < MOD:
dp[i] += dp[i-j]
print(cnt)
return
def main():
solve()
return
if __name__ == "__main__":
main()

'알고리즘' 카테고리의 다른 글
| [boj 25977] k개 사과 트리 노드만으로 배를 최대로 수확하기 (0) | 2026.03.25 |
|---|---|
| [boj 34031] 하이터치☆메모리 (0) | 2026.03.24 |
| [boj 4013] ATM (0) | 2026.03.23 |
| [boj 32406] 의좋은 형제 (0) | 2026.03.21 |
| [boj 33892] 2025 만들기 (0) | 2026.03.20 |
