여러분은 for if += % 를 다 배웠습니다.
아래 코드에 모르는 문법은 없습니다. 한 줄씩 짚으면 전부 설명할 수 있죠.
그런데도 “이 코드가 무슨 일을 하냐” 고 물으면 막힙니다.
모르는 문법이 하나라도 있나요?
없습니다. 여덟 줄 전부 배운 것뿐입니다.
lst[0] 도, % 도, += 도요.
이 코드가 무엇을 하는 코드인지 맞춰 보세요.
lst 에서 가장 큰 값을 찾는다lst 의 짝수 개수를 센다lst 에서 가장 큰 짝수를 찾는다if 가 둘이고, 그 둘이 서로 아무 상관이 없다는 것.
하나가 눈에 들어오면 나머지 하나가 가려집니다.앞 문제의 핵심은 이것입니다 —
반복 하나 안에 변수가 둘(best 와 c)이고, 둘이 각각 하는 일이 있었다는 것.
그래서 한 가지 일만 보면 답이 절반만 나옵니다. 그러니 한 줄씩 읽지 말고
데이터가 어디로 들어와서 무엇을 거쳐 어디로 나가는지부터 봅니다. 그 길목이 다섯입니다.
= 왼쪽과 for 뒤에 오는 이름.= 왼쪽에 다시 나오면 센다return이 몇 군데인가?여러분이 막히는 건 모르는 게 있어서가 아닙니다. for if % += 는 이미 다 배웠죠. 다만 코드 전체의 구조가 빨리 안 잡혀서 해석이 안 되는 것입니다. 그래서 구조부터 잡는 연습을 합니다.
IN → VAR → OUT 이 데이터가 지나가는 길이고,
LOOP · DEPTH 가 그 길을 몇 번, 얼마나 깊이 지나는가입니다.
가운데 VAR — 변수가 알맹이입니다.
변수는 무엇으로 시작해서 무엇이 되는지가 정해져 있습니다 —
0 으로 시작해 값이 쌓이면 합계, 1 씩 쌓이면 개수,
빈 리스트로 시작해 골라 담기면 걸러내기. 변수 하나가 곧 한 가지 일이고,
변수가 둘이면 하는 일도 둘입니다 — 앞 문제가 바로 그것이었죠.
f a b c 뿐인 코드입니다.
이름에서 얻을 게 하나도 없죠. 그래도 다섯 곳이 다 읽히는지 직접 해 봅니다.이름이 f(a, b, c) 뿐이고 변수도 d q s t 입니다.
이름에서 얻을 것이 하나도 없죠. 게다가 줄이 겹치고 return 이 여러 군데라
어디부터 볼지가 문제입니다.
버튼을 순서대로 눌러 보세요. 누르기 전에 먼저 답을 말해 보고 누르는 게 좋습니다.
이 코드는 무엇을(를) 받아서 무엇하며, 무엇을(를) 내놓는다.
02 VAR — 변수의 연결 무엇
a 가 q 로, q 에서 s 로,
s 에서 t 로, t 가 다시 q 로. 돌고 있죠.
그리고 t 는 d 에 쌓여 밖으로 나갑니다.