해결된 질문
작성
·
61
1
두 가지 여쭤볼 게 있습니다.(우선 저는 비전공자이고 대학교때 기초교양 과목으로 c언어,전산,아두이노 잠깐 해봤습니다.)
13 문제 중 초반 1~3문제처럼 간단한 건 풀었는데
후반 10문제를 거의 다 제대로 풀 지를 못하고 결국 해답을 봤는데
정상인지 아닌지 궁금해서 여쭤봅니다.
만약 정상이 아니라면 공부 방법을 바꿔야 하나 싶어서요.
어떤 점에서 어려움을 느꼇냐면
예를 들어
int totalPrice(List<Map<String, dynamic>> cart) {
// 여기에 작성해 주세요.
int result = 0;
for (Map<String, dynamic> item in cart) {
int price = item["price"] as int; // dynamic -> int로 변환
int count = item["count"] as int; // dynamic -> int로 변환
result += price * count;
}
return result;
}
여기서 뜬금없이 선언하지도 않은 item이라는 변수를 가지고 오는 것이나,
타입을 그자리에서 변환해주는 as , 그리고 cart라는 변수에서 item을 가져 오는 것,
이 item의 타입은 자동으로 in cart 안의 타입에 종속된다는 것
나름 5분강의 볼떄마다 30~50분을 공부해야 할 정도로 세부적으로 찾아보고
gpt도 활용해가면서 모르는 건 체크하면서 해봤습니다.
2. 그래서 하나 더 여쭤보겠습니다.
실습 문제의 의도가 궁금합니다.
단지 사고력을 기르는 의미에서 생각을 한번 해보게끔 하고 해설을 보고 이해하라는 건지
기본적인 틀만 알려주되 세세한 것들은 직접 찾아보고 공부해서 이 정도는 풀 수 있어야 한다.
라는 의미인지 알려주세요.
진짜 진지하게 공부 하고싶고 개선해보고 싶어서 이렇게 질문 드립니다.
답변 2
1
안녕하세요 웅이님
실습 자료는 강의 이상의 추가적인 학습을 할 수 있도록 드린 자료이며, 개발자라면 필연적으로 만나는 모르는 것을 검색하는 행위를 할 수 밖에 없도록 유도되어 있습니다.
또한 강의에서 제공하는 문제는 프로그래밍 실력을 테스트하기 위함이 아닙니다. 강의 내용에 추가적으로 Dart의 활용 케이스를 볼 수 있도록 제공드리는 자료이며 학습하시면서 내가 무엇을 몰랐는지 발견하셨다면, 동작과 원리를 이해하고 앞으로 필요하신 경우 활용하시면 됩니다.
int totalPrice(List<Map<String, dynamic>> cart) {
int result = 0;
for (Map<String, dynamic> item in cart) {
int price = item["price"] as int;
int count = item["count"] as int;
result += price * count;
}
return result;
}
선언하지도 않은 item이라는 변수를 가지고 오는 것
위 코드에서 for in 문을 다루는데 for (Map<String, dynamic> item in cart)
이 부분은 cart
의 요소를 꺼내어 item
이라는 변수에 할당하는 선언으로 보심이 맞습니다.
대략 이런식의 선언이라고 보시면 됩니다. Map<String, dynamic> item = cart의 첫 번째 항목
item
은 변수 이름이니 마음대로 다른 이름을 쓰셔도 무방하지요. 그리고 중괄호 안쪽이 cart
아이템의 개수 만큼 반복 실행되며, item
에는 각 순차에 해당하는 cart
의 원소가 매번 할당됩니다.
as
로 타입을 캐스팅 하는 것
Dart에는 타입을 변환하는 다양한 방법들이 있습니다. 위 예제에선 dynamic
타입을 int
로 변환하는 한 가지 방법을 소개해 드린 것으로 이해하시면 됩니다.
학습하시다 보면 이해가 안되는 것들을 많이 만나게 됩니다. 수많은 선행 지식들이 숨어있는데 내가 무엇을 모르는지 모르는 경우 그럴 수 있는데, 검색해 보시고 그래도 모르면 지금처럼 질문을 주세요. 또한 지금 당장 필요한 것이 아니라면 어딘가 기록해 두시면 나중에 봤을 때 이해되는 경우들도 있습니다.
전체적인 지도가 그려지지 않은 처음에는 실습자료를 모두 스킵하시고 쭉 강의를 수강해 주세요. 이후 내가 만들고 싶은게 있다면 바로 해당 프로젝트를 진행해 보시고 그 과정에서 실습 자료들을 참고하면서 학습하시는 방법도 좋습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 웅이님.
프로그래밍을 처음 시작하시고 여러 가지 질문이 생기셨네요. 특히 Dart 문법 실습 문제에서 어려움을 느끼신 부분에 대해 설명드리겠습니다.
문제 해결 과정에서의 어려움은 자연스러운 현상:
초보자일수록 처음에는 많은 시행착오를 겪기 마련입니다. 문제를 해결하면서 해답을 보게 되거나 이해하지 못한 부분이 있다는 것은 과정상 자연스러운 부분입니다. 특히, 비전공자이면서 프로그래밍에 익숙하지 않다면 더욱 그렇습니다. 따라서, 이 과정에서 좌절하기보다 각 문제를 통해 얻게 되는 학습을 중시하는 게 좋습니다.
for
루프와 in
키워드: for
루프를 통해 컬렉션을 순환할 때 in
키워드를 사용하여 cart
리스트 내의 각 항목을 꺼내 item
변수에 할당합니다.as(int)
키워드를 통한 타입 캐스팅: 이 키워드는 dynamic
타입의 변수를 특정 타입으로 캐스팅할 때 사용됩니다.실습 문제의 의도:
일반적으로 실습 문제는 학습자가 주어진 코드 구조를 이해하고, 직접 코드를 작성하거나 분석해 보기를 의도합니다. 이를 통해 문제 해결 능력 및 사고력을 기르고자 하는 것이 주 목적입니다. 실습 문제를 통해 새로운 개념을 이해하고 이를 실용적으로 적용할 수 있는 능력을 키우는 것이 목표입니다. 각 문제를 해결하면서 모르는 개념이 있다면, 그것에 대해 추가 학습을 하시는 것이 장기적으로는 실력을 쌓는 데 큰 도움이 됩니다.
또 Dart 문법과 실습 문제 해결 방법에 대한 질문들에서도 비슷한 사례를 찾아보실 수 있는데요, 어떤 부분에서 주로 어려움을 겪으시고 어디에 초점을 맞추셔야 할지에 대한 정보도 얻으실 수 있습니다.
프로그램을 처음 접하실 때는 모든 것을 완벽히 이해하려고 기대하기보다는, 전체 그림을 그리면서 중요한 개념을 익히는 것이 좋습니다. 이해가 안 되는 부분은 강의의 관련 부분을 여러 번 반복하거나, 관련 자료를 찾아보는 방식으로 보충해 주세요. 이러한 과정은 자연스러운 학습의 일부이므로 꾸준히 이어나가신다면 큰 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다 덕분에 다시 나아갈 수 있을 것 같습니다!