Start JavaScript

JavaScript 문제풀이(10 ~ 11)

granpa CLOCK 2021. 12. 6. 23:22
계획대로 되지 않는 다고 해서 그것이 불필요한 것은 아니다.

 

 

 

문제10 : 별 찍기

크리스마스 날, 은비는 친구들과 함께 파티를 하기로 했습니다. 그런데, 크리스마스 트리를 사는 것을 깜빡하고 말았습니다. 온 가게를 돌아다녀 봤지만 크리스마스 트리는 모두 품절이었습니다. 하는 수 없이 은비는 프로그래밍으로 트리를 만들기로 합니다.

은비를 위해 프로그램을 작성해 주세요.

**입력**
5
**출력**
    *
   ***
  *****
 *******
*********

풀이) 조건 하나씩, 단계적으로 생각하자. 한번에 많은 것을 담으려 하지 말자.

 

1단계) 다섯번의 반복, 세로로 별 출력하기

1부터 5까지 증가하는 '기준', 하나씩 증가하면서 반복한다.

즉, '별 하나를 출력하고, 줄 바꿈'을 다섯번 실행한다!

 

2단계) 순회마다 개수가 증가하는 별 출력하기

첫 번째 순회: '기준'이 1일 때, '별 <= 1'에서 별을 한 번 순회함.

즉, '1<=1' 이며, 한 개의 '*' 출력.

두 번째 순회: '기준'이 2일 때, '별 <= 2'에서 별을 두 번 순회함.

즉, '1<=2', '2<=2' 이며, 두 개의 '*' 출력.

... 다섯 번째 순회까지 돌면 1부터 하나씩 증가하는 별을 만들었다!

('1, 2, 3, 4, 5' 와 같은 식으로)

 

3단계) 우리는 '1, 3, 5, 7, 9'가 필요하다!...어라? 기존값에 2배 해서 1만 빼면 되잖아...?

'별<=기준' 에서 기준에 2배와 1을 빼주면 된다!

첫 번째 순회: '기준'이 1일 때, '별 <= 1*2 -1'에서 별을 한 번 순회함.

즉, '1<=1' 이며, 한 개의 '*' 출력.

두 번째 순회: '기준'이 2일 때, '별 <= 2*2 -1'에서 별을 세 번 순회함.

즉, '1<=3', '2<=3', '3<=3' 이며, 세 개의 '*' 출력.

... 다섯 번째 순회까지 돌면 2씩 증가하는 별을 만들었다!!

('1, 3, 5, 7, 9' 와 같은 식으로)

 

4단계) 어라...? 별의 개수는 맞췄다...그런데 이제는 공백을 맞춰야 한다.

공백은 '*'의 앞에 들어가있다. 그러니까 공식도 앞에 넣어주자.

HTML문서의 공백을 표기해주는 코드 '&nbsp;'를 이용하자!

지금까지와 같은 방법으로 반복문을 만들어주면 된다!

 

5단계) 그런데 뭔가 이상하다... 우리는 같은 공백이 필요한게 아니라 하나씩 줄어드는 공백이 필요했다...!

'공백<=기준' 으로 하니, '별<=기준'과 같은 공식이다.. 즉, 공백 또한 하나씩 증가한다...

내가 원하는 것은 '별'이 증가하면 '공백'이 줄어들어야 한다.

....그리고 '기준'이 증가할 수록 '별'도 증가한다....

그렇다면 '기준'이 증가할 수록 '공백'이 줄어든다는 얘기가 된다.

우리의 입력값은 '5'다. '공백<=5 -기준' 으로 ['기준'이 증가할 수록 '공백'이 줄어드는] 공식을 완성할 수 있다.

성공!!

 

6단계) 그렇다면 입력값인 '5'에 해당하는 것을 변수로 선언하자.

'let 입력 = 5'를 선언, 여기에는 어떤 숫자값이 들어가도 되겠다.

'기준<=5', '공백<=5 -기준' 값 또한 '기준<=입력', '공백<=입력 -기준' 으로 수정해주자.

그럼 재사용 가능한/변수를 반영하는 식이 완성되었다!


 

 

 

 

 

문제11 : for를 이용한 기본 활용

1부터 100까지 모두 더하는 Code를 <pass> 부분에 완성하세요. for를 사용해야 합니다.

let s = 0;
//pass
console.log(s);

풀이) 증가하며  's' 에 축적되는 값

위에도 나와있듯이, 첫 번째 조건은 1부터 100까지 하나씩 증가해야 한다.

두 번째 조건은 '더해지는 값'이 's'에 축적 되어야 한다.

그러므로 돌아오는 's'값은 자신에 'i'를 더한 값.

즉, 's = s + i' 이다. (축약하여 's += i'로 표현 가능)

첫 번째 순회: 'i = 0' 일 때, 's = 0 + 0'이다. 그러므로 's = 0'

두 번째 순회: 'i = 1' 일 때, 's = 0 + 1'이다. 그러므로 's = 1'(인 상태 유지)

세 번째 순회: 'i = 2' 일 때, 's = 1 + 2'이다. 그러므로 's = 3'(인 상태 유지)

네 번째 순회: 'i = 3' 일 때, 's = 3 + 3'이다. 그러므로 's = 6'(인 상태 유지)

...101번째 까지 순회하다가 'i < 101'의 조건에 불충족되면 순회를 빠져나오며

s에 축적된 값이 출력된다.

 

답) 5050

 

 


 

'Start JavaScript' 카테고리의 다른 글

JavaScript 문제풀이(16 ~ 18)  (0) 2021.12.08
JavaScript 문제풀이(13 ~ 15)  (0) 2021.12.07
JavaScript 문제풀이(7 ~ 9)  (0) 2021.12.03
JavaScript 문제풀이(4 ~ 6)  (0) 2021.12.02
JavaScript 문제풀이(1 ~ 3)  (0) 2021.12.01