작성
·
217
4
강의에서 P를 문자열 최대길이보다 크게 잡으신 이유를 잘 이해하지 못했습니다. 0으로 해도 문제가 풀리는데... 0으로 해도 무방하지 않나요?
답변 3
3
예를 들어,
p = 1일 때, ttt eachermode 를 하면 맨 앞 t가 2가되어 오류
p = 2일 때, tttt eachermode 를 하면 맨 앞 t가 3이되어 오류
p = 3일 때, ttttt eachermode 를 하면 맨 앞 t가 4가되어 오류
(.... 중략)
p = 88일 때, t...tt(t 90개) eachermode 를 하면 맨 앞 t가 100이 되어 오류
p = 89일 때, t...tt(t 91개) eachermode 를 하면 총 101자리가 되므로 p = 89일 때, t...tt(t 90개) eachermode 밖에 안되고(최대 문자열 길이는 100) 이 경우,
왼쪽에서 오른쪽으로
t...tt(90개) eachermode
90 91 ... xx 0 1 2 3 0 1 2 3 4 0
오른쪽에서 왼쪽으로
t...tt(90개) eachermode
90 89 ... 1 0 1 2 1 0 1 2 2 1 0
이렇게 되어,
만약, 주어진 문자열의 길이가 N 일 때, P값이 주어진 문자열의 길이 N보다 작은 경우, 정답에 오류가 있을 수 있으며, P 값을 최대한 큰 값으로 설정하면 오류없이 정답을 맞출 수 있다.
2
p = 0 일 때,
왼쪽에서 오른쪽으로
tteachermode
120123012340
오른쪽에서 왼쪽으로
tteachermode
110121012210
맨 앞에있는 t가 2가 되어야 하지만 1이 됩니다.
p = 100 (최대 문자열의 길이) 으로 설정했을 때,
왼쪽에서 오른쪽으로
tteachermode
101 102 0 1 2 3 0 1 2 3 4 0
오른쪽에서 왼쪽으로
tteachermode
2 1 0 1 2 1 0 1 2 2 1 0
큰 숫자로 초기화 했을 땐 값이 제대로 나타납니다
이를 통해 알게 된 사실은..
만약, 주어진 문자열의 길이가 n 일때, p값을 n > p 범위로 설정하면 두 번째 루프를 돌 때(오른쪽에서 왼쪽으로) 답에 오류가 생길 수 있습니다.
2
안녕하세요^^
아래 입력으로 해보세요. 안되는 이유와 왜 p를 큰 숫자로 초기화해야 하는지 알게 될 겁니다.
감사합니다!!