처음 코드 짯을 땐 시간초과 걸렸다. 시간을 줄이기 위해 노력했다.


kin 변수는 즐거운 날을 기록하는 변수이다

gap 배열은 2차원 배열로 0번째는 즐거운날의 주기를 기록하고 있으며, 1번째는 해당 주기로 몇일까지 왔는지 기록한다.


예시를 보면

1 7 10 13 19 에서


처음 gap[0][0] = 7 - 1 = 6, gap[0][1] = 1 이 되며, 이 의미는 주기가 6인 경우 현재 배열의 인덱스 1이 마지막이라는 의미이다.


다음 값인 10이 주기에 해당하는지 kin[gap[0][1]]번째의 값인 7 + gap[0][0] = kin[2] 인지 확인한다.  13 != kin[2]  이므로 

gap에 다음 주기가 저장 되어있는지 확인한다. 없으면 새로운 주기 등록이 필요하므로 주기를 넣어주고 현재 인덳스를 추가한다.


주기에 의해 중복되는 날이 있을 수 있으므로 29번째 비교 if문에서 주기 확인 후 break를 해주면 안된다.

break를 넣게 되는 경우, 중복 되는 다른 주기가 날짜 갱신을 하지 못해 오답을 낸다( 13개중 11개 맞게 된다)


설명이 부족한 것 같지만... 소스코드를 보면 이해할 수 있을 것입니다.



'코딩,문제풀이 > SWExpertAcademy' 카테고리의 다른 글

3431. 준환이의 운동관리(D3)  (0) 2018.06.24
3456. 직사각형 길이 찾기(D3)  (0) 2018.06.24
4579. 세상의 모든 팰린드롬 2(D3)  (0) 2018.06.24
3499. 퍼펙트 셔플(D3)  (0) 2018.06.24
3750. Digit sum(D3)  (0) 2018.06.24

+ Recent posts