오늘의 문제
https://www.acmicpc.net/problem/15829
- 오늘의 학습 키워드
Biginteger
- 공부한 내용 본인의 언어로 정리하기
1. 첫째줄에 문자의 길이를 입력한다.
2. 문제에 주어진 key포인트를 확인한다.
2-0 문자에 해당하는 숫자를 부여한다.(a는 1. b는 2... z 는 27)
2-1 아래는 우리가 구현해야하는 수식이다.
2-2 수식에서 r 값과 M값은 문제에서 아랫 부분에 정의해주었다.
2-3
문자 길이의 각 항에 대해 문자의 자리에 따라 0부터 50까지 r의 자리수 제곱으로 계수를 만드는데 Large는 최대 50자이다.
31^50 을 하면 (51자리 넘어감) long의 자리 수가 넘어가기 때문에 BigInteger를 사용해야된다는 결론이 나온다.
2-4
숫자를 모두 더한 다음 M값으로 나누기를 하면 숫자가 너무 커져서 BigInteger로도 처리 하지 못할 가능성이 있을 것이다.
그럼 미리 M값으로 나눈 나머지들을 더해도 상관없을 것이다.
라고 생각했는데 아래에서 M이 9라면 나머지들을 더한 값에 %M을 한번 더 해줘야함을 알 수 있다.
( 1 + 2 + 3 + 4 ) / M 의 나머지 = (1 / M의 나머지 + 2 / M의 나머지 + 3 / M 의 나머지 + 4 / M의 나머지) / M의 나머지(???)
- 오늘의 회고
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
sum 값에 %M을 한번 더 안해줘서 small 까지만 맞았다.
- 어떻게 해결했는지
%M을 해줘야 한다는걸 깨달았다. 작은 수를 더해보면서.
- 무엇을 새롭게 알았는지
BigInteger 사용법에 대해 학습하였다.
'교육 > 항해99 클럽 코딩테스트 스터디' 카테고리의 다른 글
99클럽 코테 스터디 6일차 TIL + Map (0) | 2025.01.20 |
---|---|
99클럽 코테 스터디 4일차 TIL + 문자열 StringBuilder (1) | 2025.01.16 |
99클럽 코테 스터디 3일차 TIL + BufferedReader, BufferedWriter (1) | 2025.01.15 |
99클럽 코테 스터디 2일차 TIL + 문자열(EOF) (0) | 2025.01.14 |
99클럽 코테 스터디 1일차 TIL + 문자열 (0) | 2025.01.13 |