0:00:00.000,0:00:03.147 보석은 예쁘죠 0:00:03.147,0:00:08.275 보석 한개보다 좋은 건 여러개의 보석이죠 0:00:08.275,0:00:12.562 이제 우리는 loop을 사용해서[br]여러개의 보석을 만들줄 알죠 0:00:12.562,0:00:16.162 for loop을 사용해 [br]한 줄에 12개의 보석을 만들어보죠 0:00:16.162,0:00:19.523 왼쪽에서 오른쪽으로요 0:00:19.523,0:00:22.304 이렇게요 0:00:22.304,0:00:31.186 for 안에 변수 i = 0; i는 12보다 작고; i++ 0:00:31.186,0:00:36.429 이 줄을 복사해서 for문 안에다가 붙여넣어요 0:00:36.429,0:00:40.305 이렇게 하면 12개의 보석이[br]맨 윗줄 한 칸에 겹쳐서 나와요 0:00:40.305,0:00:43.401 근데 우리는 화면을 가로질러서 나오게하고 싶어요 0:00:43.401,0:00:45.941 그렇다는 건 x값이 바꿔야한다는거죠 0:00:45.941,0:00:49.524 지금은 36인데, 매번 값이[br]다르게 나오게하고 싶어요 0:00:49.524,0:00:51.859 i값을 이용해서 하면 됩니다 0:00:51.859,0:00:56.329 간단하게 i 곱하기 36[br]이렇게 하면 0:00:56.329,0:01:02.687 첫번째 값은 0이고, 다음은 36, 72.... 0:01:02.687,0:01:04.575 이제 한 줄의 보석이 나오네요 0:01:04.575,0:01:07.997 인디아나존스나 알라딘 영화를 보면 0:01:07.997,0:01:11.306 보석을 발견할 때 0:01:11.306,0:01:13.732 보통 이렇게 한 줄의 보석만을 발견하지 않죠 0:01:13.732,0:01:17.306 보석 더미를 발견하죠 0:01:17.306,0:01:21.609 그럼 어떻게 하면 보석을 쭈욱 0:01:21.609,0:01:24.806 스크린 밑에까지 나오게 할 수 있을까요? 0:01:24.806,0:01:30.639 우선 이 for loop을 복사 붙여넣기 한 후 0:01:30.639,0:01:34.565 y를 매번 바꿔줍니다 0:01:34.565,0:01:37.688 60 그 다음에는 90 0:01:37.688,0:01:42.308 이제 보석 3줄이 생겼네요 0:01:42.308,0:01:45.495 하지만 이 방법이 좋지 않은게 0:01:45.495,0:01:49.193 매줄마다 복사 붙여넣기 한 후 [br]값을 바꿔줘야되요 0:01:49.193,0:01:52.859 이렇게 반복적인 코드를 작성하면 0:01:52.859,0:01:57.025 "loop을 사용해야지" 라는 생각이 들지만 0:01:57.025,0:01:58.607 이미 loop을 쓰고 있어요 0:01:58.607,0:02:03.854 그렇다면 이런 반복적인[br]코드 작성의 해결책은 뭘까요? 0:02:03.854,0:02:09.518 Nested for loop (겹쳐진 for loop) 이라는 것이 있습니다[br]loop 안에 loop 입니다 0:02:09.518,0:02:12.132 바깥쪽 loop을 만든 후에 0:02:12.132,0:02:14.851 이건 스크린 밑으로 [br]내려가는 걸 해주는 loop이고 0:02:14.851,0:02:19.234 안쪽 loop은 보석 한 줄을 0:02:19.234,0:02:21.977 왼쪽에서 오른쪽으로 나타나게 합니다 0:02:21.977,0:02:24.006 어떻게 하는지 보여드리죠 0:02:24.006,0:02:29.851 변수 i를 사용하고 있으니 [br]다른 변수 j를 사용하죠 0:02:29.851,0:02:37.274 변수 j = 0; j는 13보다 작고; j++ 0:02:37.274,0:02:41.999 이게 위에서 아래로 내려가는 것을[br]담당하는 저희의 바깥쪽 loop이 됩니다 0:02:41.999,0:02:48.237 기존에 사용했던 for loop을 안에다가 넣습니다 0:02:48.237,0:02:53.274 들여쓰기를 고치고, 기존의 것을 지웁니다 0:02:53.274,0:02:59.109 이렇게하면 한 줄에 똑같은 보석이 겹치게 나옵니다 0:02:59.109,0:03:01.969 그러니 y의 값이 변하게 해줘야겠죠 0:03:01.969,0:03:04.309 기존의 것을 그대로 가져왔기 때문에 0:03:04.309,0:03:06.108 y값이 항상 90입니다 0:03:06.108,0:03:09.440 매 행마다 y의 값이 바뀌게 하고 싶어요 0:03:09.440,0:03:16.188 x는 i값을 이용하니, y는 j를 이용하게 합니다 0:03:16.188,0:03:24.663 x에서 했던 방식대로 j 곱하기 30을 합니다 0:03:24.663,0:03:29.934 짜잔! 멋집니다. 0:03:29.934,0:03:31.776 다시 우리가 한 것을 살펴보죠 0:03:31.776,0:03:38.340 바깥쪽 loop은 j가 13이 될 때까지 실행하며 0:03:38.340,0:03:44.340 매번 안쪽 loop을 실행시킵니다 0:03:44.340,0:03:48.673 안쪽 loop은 i가 12이 될 때까지 실행하고 0:03:48.673,0:03:55.358 매번 i와 j를 이용하여 [br]x와 y위치에 보석을 그립니다 0:03:55.358,0:03:59.607 따라서 i의 값이 j의 값보다 훨씬 더 자주 변하죠 0:03:59.607,0:04:05.238 더 잘 이해하기 위해 실제로 i 값과 j 값이 변하는 것을[br]시각적으로 보도록 합시다 0:04:05.238,0:04:09.277 이미지 출력 부분을 주석처리하고 0:04:09.277,0:04:12.027 색이 나오게 한 후 0:04:12.027,0:04:16.796 text 명령어를 이용해 j값이 보이게하죠 0:04:16.796,0:04:22.025 이 위치에 j가 나타나도록 입력합니다 0:04:22.025,0:04:26.009 이제 j가 0부터 12까지 나오는게 보이네요 0:04:26.009,0:04:32.019 이건 보석의 행의 위치와 같죠 0:04:32.019,0:04:35.684 이제 i의 값이 어떻게 변해 가는지를 보도록 합시다 0:04:35.684,0:04:43.066 다른 색깔이 나오게 한 다음 0:04:43.066,0:04:46.475 i를 입력해서 0:04:46.475,0:04:50.271 x 값이 화면의 가로로 나오게 x값이 변하게 해줍니다 0:04:50.271,0:04:54.688 y에도 똑같이 해주고요 0:04:54.688,0:04:59.561 i가 0부터 11까지 나오는게 보이네요 0:04:59.561,0:05:04.686 i가 더 자주 변하는 걸 알 수 있죠 0:05:04.686,0:05:08.778 그리고 이 줄의 코드가 [br]윗줄의 코드보다 더 많이 실행됩니다 0:05:08.778,0:05:13.855 왜냐하면 이 줄은 안쪽 loop이 [br]실행될때마다 실행되는데 0:05:13.855,0:05:19.527 윗 줄의 코드는 바깥loop이 실행될때만[br]실행되니까요 0:05:19.527,0:05:22.140 i와 j값을 출력해봤는데요 0:05:22.140,0:05:26.973 nested for loop을 더 잘 이해하셨기를 바랍니다 0:05:26.973,0:05:30.475 다시 보석 문제로 돌아가보죠 0:05:30.475,0:05:34.066 nested for loop에서 많은 걸 할 수 있는데요 0:05:34.066,0:05:37.232 이 세상에 있는 것들 중에서 0:05:37.232,0:05:39.599 2차원 무늬들은 체스보드나 퀼트 0:05:39.599,0:05:44.564 미국 국기의 별, 멋진 패턴, 벽지모양 등이 있는데 0:05:44.564,0:05:47.462 우선 이 코드를 이용해 0:05:47.462,0:05:49.806 이미지를 바꿔보도록 하죠 0:05:49.806,0:05:55.496 하트모양이 나오도록 해보죠 0:05:55.496,0:05:59.161 짠!