인프런 커뮤니티 질문&답변

공부합시다님의 프로필 이미지

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-O

안녕하세요~

작성

·

352

0

8:12에서 코드에  n = 7일때 대입을 해보았습니다.

첫 loop에서

cnt = 11

cnt = 11 % 7 -> 4

ret =2

4 % 7 == 0 안되고, else로 가서

cnt = 4 * 10 + 1 - > 41

cnt = 41 % 7 -> 6

ret = 3

6%7 ==0 안되고, else로 가서

cnt = 61

cnt = 61%7 -> 5

ret = 4

5%7 == 0 안되고 else로 가서

cnt = 51

cnt = 51%7 -> 2

ret = 5

2 % 7 == 0 안되고 else로 가서

cnt = 21

cnt = 21%7 -> 0

ret = 6

0%7 == 0 되서

ret인 6이 출력되는

 

강사님께서 설명하시는 1,11,111,1111은 어떤것을 말씀하시는건지 잘 모르겠습니다.. 제가 문제를 잘 못 이해하고 있는 걸까요… ㅠㅠ

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 Dae님 ㅎㅎ

일단 문제를 이해해보자면 이런거에요.

예시 중에 3이 있죠?

3의 배수중 1로만 되어있는 수 중 가장 작은 수의 "자릿수"를 구하는 문제에요.

3의 배수인데 1로만 되어있는 수 중 가장 작은 수는

1

11

111

1111

11111

중에 111이죠? 3으로 나누어 떨어지니까요.

근데 이를 11111 이런 수를 만들어서 나누어버리면 너무나도 큰 수를 기반으로 나누게 되는데

모듈러 연산의 특징을 이용해서

(a + b) % c = a % c + b % c

매번 나누면서 답을 찾는 거에요.

 

혹시 이해 안되시는 부분이 있으시면 다시 질문주세요.

감사합니다.

0

이해했습니다! 친절한 답변 감사합니다.