본문 바로가기

카테고리 없음

[Flutter_개발] 개인 과제

오늘은 개인 과제 1번과 2번 문항을 풀어보았다.

 

필수 문제 1번

1. 점수에 맞는 등급 출력하기

[ 설명 ]

  • 제시된 예시 점수에 해당하는 등급을 알맞게 출력하세요!

[ 조건 ]

  • 예시 점수 : 84점
  • 점수에 따른 등급 기준
    • 90점 ~ 100점 : A등급
    • 80점 ~ 89점 : B등급
    • 80점 미만은 C등급
  • 출력 형태 : 이 학생의 점수는 [점수] 이며, 등급은 [등급]입니다!
  • 출력 예시

void main() {
  // 변수선언
  int score = 84;
  String grade;
  // if문을 이용해서 점수마다 등급 부여
  if (score >= 90 && score <= 100) {
    grade = "A등급";
  } else if (score >= 80 && score < 90) {
    grade = "B등급";
  } else {
    grade = "C등급";
  }

  print("이 학생의 점수는 $score 이며, 등급은 $grade입니다!");
}

 

필수 문제 2번

 

1. 구매자가 장바구니에 담은 상품 목록을 볼 수 있는 기능

[ 설명 ]

  • 구매자의 장바구니에 담겨 있는 물품들의 전체 금액을 계산합니다.

[ 조건 ]

  • 현재 가게에서 판매하고 있는 상품들과 각각의 가격은 다음과 같습니다.
    • 티셔츠 : 10000원
    • 바지 : 8000원
    • 모자 : 4000원
  • 구매자의 장바구니 품목들이 아래 리스트와 같다면, 물품의 전체 금액을 계산하여 출력하세요!

2. 전체 구매 예정 금액에 따른 할인 여부를 확인하는 기능

[ 설명 ]

  • 1번에서 구한 상품들의 총 가격에 따라 할인 여부를 계산하여 출력합니다.

[ 조건 ]

  • 상품들의 총 가격이 2만원이 넘은 경우
    • 할인 금액 : [1번에서 구한 가격의 10%]원 을 출력합니다.
  • 상품들의 총 가격이 2만원이 넘지 않은 경우 관련 내용 출력 X 
void main() {
  // 상품 가격표 key값 티셔츠, 바치, 모자 value값 10000 8000 4000
  Map<String, int> prices = {"티셔츠": 10000, "바지": 8000, "모자": 4000};
  // 구매자가 담은 물건들을 순서대로 저장
  List<String> cart = ["티셔츠", "바지", "모자", "티셔츠", "바지"];

  // for in문을 사용해서 item에 임시로 cart 값을 가져옴
  int total = 0;
  for (var item in cart) {
    total += prices[item]!;
  }

  print("장바구니에 $total원 어치를 담으셨네요!");

  // if 문을 사용해서 할인을 하는경우와 금액을 결정
  int pay = 0;
  int discount = 0;

  if (total >= 20000) {
    discount = (total * 0.1).toInt();
    pay = (total * 0.9).toInt();
    print("할인 금액 : $discount원");
  } else if (total < 20000) {
    pay = total;
  }

  print("최종 결제 금액은 $pay원 입니다!");
}

트러블슈팅

  • 배경:
    상품 가격 총합(total)에서 10% 할인 금액과 최종 결제 금액을 계산하려고 total * 0.1, total * 0.9 연산을 수행했음.
    그러나 결과가 1000.0, 9000.0과 같이 double 타입으로 표시되어 원하는 정수 단위(원)로 표시되지 않음.
  • 발단:
    계산 결과가 double 타입으로 나오면서 사용자 입장에서 금액 표시가 부자연스럽고, 이후 계산이나 출력에서도 정수형 연산을 기대하는 코드와 충돌할 수 있음을 인지함.
  • 전개:
    문제 해결을 위해 double 값을 정수로 변환하기 위해 toInt()를 사용함.
    예를 들어, discount = (total * 0.1).toInt() 와 같이 변환하여 정수 단위로 금액을 계산하도록 수정함.
  • 위기:
    하지만 이미 할인 금액과 최종 금액을 저장하는 변수들이 double 타입으로 선언되어 있어 변환 후에도 타입 불일치 오류 발생toInt()를 적용 후에도 오류가 발견됨 
  • 절정:
    근본적인 해결을 위해 변수 선언부터 int 타입으로 정의하고, 계산 시에도 정수형 연산으로 처리하도록 접근함.
    즉, int discount와 int pay를 선언하고, 계산 시 (total * 0.1).toInt() 형태로 값을 저장하도록 코드를 수정함.
  • 결말:
    결과적으로, double과 int 간 타입 불일치 문제를 근본적으로 해결할 수 있었고
    계산 결과가 화면 출력과 연계될 때도 항상 정수 단위로 자연스럽게 표시됨.

 

마무리

정말 간단한 문제인데도 아직 나에게는 바로 해결이 불가능 하였다. 단순히 양변의 값이 다르기 때문에 발생하는 오류라 양변의 타입을 똑같이만 해주면 되는 문제였다. 튜터님 설명을 듣고나서 이렇게도 단순한 건데 고민했던게 조금 후회도 되고 헛웃음이 지어졌다. 반대로 이런 간단한 문제로도 프로그램 실행 자체를 못하는 경우가 있기 때문에 하나하나 잘 확인하면서 해야 된다고 느꼈다.

 

 

배웠던 Dart 문법들을 활용해서 개인과제 1, 2번을 해결하고 팀원들과도 문제에 관해서 서로 의견을 나누며 협력하는 시간을 보냈다. 지금은 강의들을 다시 돌려보며 필요한걸 하나 하나 찾아가며 해결했다. 나중에 팀원들과 소통이나 튜터님께 질문을 통해서 좀더 간결하게 만들 수 있는지 확인하고 수정 해봐야겠다.