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

최한울님의 프로필 이미지
최한울

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

4. 문자거리

P값이 0이어도 괜찮지 않나요?

작성

·

219

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를 큰 숫자로 초기화해야 하는지 알게 될 겁니다.

let str="tteachermode";
console.log(solution(str, 'e'));
최한울님의 프로필 이미지
최한울
질문자

감사합니다!!

최한울님의 프로필 이미지
최한울

작성한 질문수

질문하기