본문 바로가기
CBSH Algorithm League/2019 Season 1

2019 CAL Season 1 #E 풀이

by EXE_김건형 2019. 9. 21.

문제 원본 : https://algospot.com/judge/problem/read/PASS486

 

algospot.com :: PASS486

비밀번호 486 문제 정보 문제 재훈이는 한 번 담배를 끊겠다고 다짐할 때마다 이메일 계정 비밀번호를 바꾸는 습관이 있습니다. 재훈이는 비밀번호를 항상 "no-smok**X**" 와 같이 정하는데, 여기서 X는 1자리 이상의 자연수입니다. 재훈이에게는 k번째로 금연을 다짐할 때는 항상 정확히 k개의 약수를 갖는 숫자로 X를 선택하는 습관이 있습니다. 예를 들어 재훈이가 12번째로 금연을 다짐했을 때 쓴 비밀번호는 no-smok486 이었습니다. 486 에

algospot.com

출처 : 알고리즘 문제 해결 전략

출제자 : 31기 김건형

 

맞은 동아리

: 로고스 / EXE&GAIA / 혜옴 / ATOM

정답 소스코드

풀이법은 다음과 같습니다.

입력되는 최대 범위가 10000000까지이고 시간제한이 4초임을 생각하여 여유롭게 문제를 해결할 수 있습니다.

(문제의 원본은 5초의 제한시간이나, CAL은 문제의 난이도를 높이고자 4초로 조정하였습니다.)

c를 입력받기 전에 1~10000000까지 모든 수의 약수들을 저장하고 시작합니다. (본문에서 int형 배열 arr)

언뜻 보기에는 10000000^2의 2중 for문처럼 보이나 정밀하게 계산해보면 2초 이내에 배열을 완성할 수 있습니다.

배열을 만든 후에는 c의 값에 따라 입력을 받아 조건에 부합하는 값의 개수를 세어주면 됩니다.

최종적으로 최악의 경우에도 4초 이내에 정답을 출력할 수 있습니다.

'CBSH Algorithm League > 2019 Season 1' 카테고리의 다른 글

2019 CAL Season 1 #G 풀이  (0) 2019.10.02
2019 CAL Season 1 #F 풀이  (0) 2019.09.23
2019 CAL Season 1 #D 풀이  (0) 2019.09.21
2019 CAL Season 1 #C 풀이  (0) 2019.09.21
2019 CAL Season 1 #B 풀이  (0) 2019.09.21

댓글