javascript for문 중첩 질문드립니다
인수를 입력받아서 1, 12, 123, 1234 이런식으로 출력해야하는건데
function makeMarginalString(str)
{ //flower 입력
let result = '';
for(let i = 0; i<str.length; i++) // i 가 입력받은 인수 str의 문자열 길이 보다 작을때 까지만 반복
{
for(let n =0; n<=str.length; n++) // 위랑 같음.
{
result = result +str[n];
}
return result;
}
}
이렇게하면 정직하게 flower 가 나오게됩니다. 하나씩 디버깅 해보니까 뭔가 생각이 날듯 하면서도
생각이 안나는데 혹시 힌트 주실 수 있나요 ㅠㅠ
for문 처음 배울 때 별 출력 하는거 그거랑 비슷한것 같은데 문자열이 반복되야 한다고 하니까
감이 안잡힙니다..
안녕하세요~! 아하(Aha) 지식답변자 다라닝입니다.
질문하신 내용에 대하여 아래와 같이 답변 드립니다.
말씀하신 로직만 봐서는 그대로 flower 가 나올수밖에 없습니다.우선 반복문 돌면서 증가하는 숫자를 찍고 싶으신거면
연산되는 구문에 배열을 꺼낼것이 아니라 증가되는 i나 n 을 적는것이 맞구요.
디버깅을 하면서 혼란스러우시면 2가지 방법이 있습니다.
하나는 반복문 돌아가는 숫자를 줄이는것입니다.
여기서는 flower 라는 문자가 많아서 반복문안에서 반복문이 도니 36번을 돌아야하죠.
단어를 sun으로 줄이면 9번만에 반복문이 끝나니 좀더 이해가 빠르실수 있습니다.
다른 하나는 펜들고 연습장에다 적어보는겁니다.
반복문을 머릿속에서 돌리고 한번 돌때마다 어떻게 나올지 예상치를 적어가다 보면
어느순간 놓치신 부분을 이해하는데 도움이 되실거예요.
부족하지만 도움이 되셨기를 바라며 추가적인 문의가 필요하시면 답변 부탁드려요!- function makeMarginalString(str) { //flower 입력 let result = ''; for(let i = 0; i<str.length; i++) // i 가 입력받은 인수 str의 문자열 길이 보다 작을때 까지만 반복 { for(let n =0; n<=i; n++) // 위랑 같음. { result = result + str[n]; } result = result + "\r\n"; // 줄바꿈이 웹페이지에서 보이게 한다면 <br>로 바꾸면 됩니다 } return result; }
위 소스를 보시면 알겠지만
return result 위치가 틀렸습니다
그리고 출력후 자리바꿈이 일어나야 하기때문에 \r\n 추가했습니다
만약 웹페이지에서 봤을때 피라미드 형태가 아닌 한줄에 전부 출력이 된다면?
<br>로 교체하면 됩니다