더북(TheBook)

16 급식 메뉴에 )가 없고 온점(.)이 있을 경우 첫 번째 점의 위치를 이용해 요리명길이를 구하도록 요리명길이구하기 함수의 나머지 부분을 완성합니다.

 

한줄에 )가 없다면 온점(.)이 있는지를 검사하고, 온점이 있다면 몇 번째 위치에 있는지 찾습니다. 예를 들어, ‘방울토마토12.13.’에는 8번째와 11번째 위치에 온점이 있습니다. 그런데 블록은 찾는 단어가 텍스트의 여러 곳에 있을 경우 가장 먼저 등장하는 단어의 위치를 돌려주기 때문에 첫 번째 점 위치의 값은 8이 됩니다.

 

 

첫 번째 점 앞에는 숫자가 있고 숫자 앞에는 요리명이 있기 때문에 첫 번째 점의 위치를 이용하면 요리명이 끝나는 지점의 위치를 찾아서 요리명의 길이를 알아낼 수 있습니다.

알레르기 유발 식재료 번호는 1~18까지이므로 만약 첫 번째 점보다 2칸 앞의 숫자가 1이라면 알레르기 유발 식재료 번호가 10~18 사이의 두 자리 숫자라는 의미이므로 첫 번째 점보다 3칸 앞이 요리명 끝 글자의 위치가 됩니다. 반대로, 첫 번째 점보다 2칸 앞의 숫자가 1이 아니라면 알레르기 유발 식재료 번호가 1~9 사이의 한 자리 숫자라는 의미이므로 첫 번째 점보다 2칸 앞이 요리명 끝 글자의 위치가 됩니다. 예를 들어, 한줄의 값이 ‘방울토마토12,13.’이라면 첫 번째 점의 위치보다 3칸 앞에 있는 ‘토’의 위치인 5가 요리명길이 값이 되고, 한줄의 값이 ‘마파두부5.6.12.’라면 첫 점의 위치보다 2칸 앞에 있는 ‘부’의 위치인 4가 요리명길이 값이 됩니다.

요리명길이를 결과값으로 반환합니다. 만약 한줄 값에 )도 없고 온점(.)도 없다면 요리명길이는 초기값인 한줄의 길이가 됩니다. 예를 들어, 한줄의 값이 ‘보리밥’이라면 여기에는 )온점도 없으므로 ‘보리밥’의 길이인 3을 반환합니다.

 

TIP

각 학교마다 요리명을 표현하는 방식이 조금씩 다르고 요리명에 오타가 있을 수 있기 때문에 현재의 ‘요리명길이구하기’ 함수의 기능만으로 모든 학교의 급식 메뉴에서 요리명의 길이를 정확하게 구하는 것은 불가능합니다. 예를 들어 급식 메뉴가 ‘아미노(칼슘)영양밥’이면 ‘요리명길이구하기’ 함수는 ‘)’의 위치를 반환하기 때문에 요리명은 ‘아미노(칼슘)’가 되고 ‘영양밥’은 잘려 나갑니다. 또는 급식 메뉴가 ‘모듬햄김치찌개.1.2.5.6.’이라면 ‘요리명길이구하기’ 함수는 첫 번째 온점( . )의 위치보다 2칸 앞에 있는 위치를 반환하기 때문에 요리명은 ‘모듬햄김치찌’가 되어 ‘개’는 잘려 나갑니다. 이와 같은 일이 일어나지 않게 ‘요리명길이구하기’ 함수가 모든 상황에 대응하도록 만들려면 코드가 너무 길어지므로 책에서는 다루지 않겠습니다. 만약 ‘요리명길이구하기’ 함수가 여러분이 선택한 학교의 급식 메뉴에서 요리명의 길이를 제대로 구하지 못한다면 직접 원인을 파악해 보고 문제를 해결해 봅시다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.