인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

웅이님의 프로필 이미지

작성한 질문수

Flutter 앱 개발 기초

Dart 문법 실습문제 풀고 있는데요

해결된 질문

작성

·

61

1

두 가지 여쭤볼 게 있습니다.(우선 저는 비전공자이고 대학교때 기초교양 과목으로 c언어,전산,아두이노 잠깐 해봤습니다.)

 

  1. 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

DevStory님의 프로필 이미지
DevStory
지식공유자

안녕하세요 웅이님

실습 자료는 강의 이상의 추가적인 학습을 할 수 있도록 드린 자료이며, 개발자라면 필연적으로 만나는 모르는 것을 검색하는 행위를 할 수 밖에 없도록 유도되어 있습니다.

또한 강의에서 제공하는 문제는 프로그래밍 실력을 테스트하기 위함이 아닙니다. 강의 내용에 추가적으로 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;
}
  1. 선언하지도 않은 item이라는 변수를 가지고 오는 것


    위 코드에서 for in 문을 다루는데 for (Map<String, dynamic> item in cart) 이 부분은 cart의 요소를 꺼내어 item이라는 변수에 할당하는 선언으로 보심이 맞습니다.
    대략 이런식의 선언이라고 보시면 됩니다. Map<String, dynamic> item = cart의 첫 번째 항목
    item은 변수 이름이니 마음대로 다른 이름을 쓰셔도 무방하지요. 그리고 중괄호 안쪽이 cart 아이템의 개수 만큼 반복 실행되며, item에는 각 순차에 해당하는 cart의 원소가 매번 할당됩니다.

  2. as 로 타입을 캐스팅 하는 것
    Dart에는 타입을 변환하는 다양한 방법들이 있습니다. 위 예제에선 dynamic 타입을 int로 변환하는 한 가지 방법을 소개해 드린 것으로 이해하시면 됩니다.

     

학습하시다 보면 이해가 안되는 것들을 많이 만나게 됩니다. 수많은 선행 지식들이 숨어있는데 내가 무엇을 모르는지 모르는 경우 그럴 수 있는데, 검색해 보시고 그래도 모르면 지금처럼 질문을 주세요. 또한 지금 당장 필요한 것이 아니라면 어딘가 기록해 두시면 나중에 봤을 때 이해되는 경우들도 있습니다.

전체적인 지도가 그려지지 않은 처음에는 실습자료를 모두 스킵하시고 쭉 강의를 수강해 주세요. 이후 내가 만들고 싶은게 있다면 바로 해당 프로젝트를 진행해 보시고 그 과정에서 실습 자료들을 참고하면서 학습하시는 방법도 좋습니다.

웅이님의 프로필 이미지
웅이
질문자

감사합니다 덕분에 다시 나아갈 수 있을 것 같습니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 웅이님.

프로그래밍을 처음 시작하시고 여러 가지 질문이 생기셨네요. 특히 Dart 문법 실습 문제에서 어려움을 느끼신 부분에 대해 설명드리겠습니다.

  1. 문제 해결 과정에서의 어려움은 자연스러운 현상:
    초보자일수록 처음에는 많은 시행착오를 겪기 마련입니다. 문제를 해결하면서 해답을 보게 되거나 이해하지 못한 부분이 있다는 것은 과정상 자연스러운 부분입니다. 특히, 비전공자이면서 프로그래밍에 익숙하지 않다면 더욱 그렇습니다. 따라서, 이 과정에서 좌절하기보다 각 문제를 통해 얻게 되는 학습을 중시하는 게 좋습니다.

    • for 루프와 in 키워드: for 루프를 통해 컬렉션을 순환할 때 in 키워드를 사용하여 cart 리스트 내의 각 항목을 꺼내 item 변수에 할당합니다.
    • as(int) 키워드를 통한 타입 캐스팅: 이 키워드는 dynamic 타입의 변수를 특정 타입으로 캐스팅할 때 사용됩니다.
  2. 실습 문제의 의도:
    일반적으로 실습 문제는 학습자가 주어진 코드 구조를 이해하고, 직접 코드를 작성하거나 분석해 보기를 의도합니다. 이를 통해 문제 해결 능력 및 사고력을 기르고자 하는 것이 주 목적입니다. 실습 문제를 통해 새로운 개념을 이해하고 이를 실용적으로 적용할 수 있는 능력을 키우는 것이 목표입니다. 각 문제를 해결하면서 모르는 개념이 있다면, 그것에 대해 추가 학습을 하시는 것이 장기적으로는 실력을 쌓는 데 큰 도움이 됩니다.

Dart 문법과 실습 문제 해결 방법에 대한 질문들에서도 비슷한 사례를 찾아보실 수 있는데요, 어떤 부분에서 주로 어려움을 겪으시고 어디에 초점을 맞추셔야 할지에 대한 정보도 얻으실 수 있습니다.

프로그램을 처음 접하실 때는 모든 것을 완벽히 이해하려고 기대하기보다는, 전체 그림을 그리면서 중요한 개념을 익히는 것이 좋습니다. 이해가 안 되는 부분은 강의의 관련 부분을 여러 번 반복하거나, 관련 자료를 찾아보는 방식으로 보충해 주세요. 이러한 과정은 자연스러운 학습의 일부이므로 꾸준히 이어나가신다면 큰 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

웅이님의 프로필 이미지

작성한 질문수

질문하기