Skip to content

Instantly share code, notes, and snippets.

@doyle-flutter
Created August 24, 2021 17:00
Show Gist options
  • Save doyle-flutter/6f864fcc92507c2d7696be49b84eafb1 to your computer and use it in GitHub Desktop.
Save doyle-flutter/6f864fcc92507c2d7696be49b84eafb1 to your computer and use it in GitHub Desktop.
책, 그리고 Dart
void main() {
// 오늘 4권의 책을 선물 받았다, 나름 정리를 잘하는,
// 깔끔한 사람이므로 도착한 순서대로 서랍에 정리했다.
// [ Book, Book, ... Book]
List<String> books = [ "폴란다스의 개", "해리포터-불의잔", "코난", "해리포터-아즈카반의죄수" ];
// 🎯
// 책을 읽던 중 '코난' 가 보고 싶어서
// 서랍에서 그 중 하나를 찾으려 한다.
String target = "코난";
// 순서대로 정리했으니 서랍을 열고 첫 번째 책부터
// 꺼내서 ‘코난’ 인지를 살펴보면 찾을 수 있을 것 같다.
// (1)
for(int i =0; i < books.length; i++){
if(books[i] == target){
print(" ' $target ' 이(가) ${i+1} 번째에 있다!");
break;
}
}
// 서랍에 순서대로 정리했으니 순서대로 하나씩 비교하며 ‘코난’ 책을 찾았다.
// 💪LV_2
// 올해 1000권 정도가 도착한다고 하는데,
// 중간에 보고 싶은 책이 생겨서 468 번째의 책을 찾으려면
// 최소 467개의 책을 찾아 봐야한다...
// 갑자기 너무 끔찍해서 라벨링을 하기로 마음먹었다.
// 아직 10개일 때 다시 꺼내어 서랍에 받은 책들의 목록을 적고
// 순서대로 넣었다.
// (2)
Map<String, int> booksWithLabel = {};
for(int i = 0; i < books.length; i++){
booksWithLabel.addAll( { books[i] : i } );
}
// 이젠 보고 싶은 책이 생겨도 처음 책부터 꺼내어
// 맞는지 찾아보지 않고 바로 찾을 수 있게 되었다.
print(" ' $target ' 이(가) ${booksWithLabel[target]!+1} 번째에 있다!");
// 💪LV_3
// '어떤 책' 이 보고 싶다고도 생각 날 수 있겠지만
// '몇 번째' 가 보고 싶다고도 할 수 있을 것 같다.
// 그래서 이번엔 라벨링한 것들 중 '몇 번째'에 있는지 찾아볼 것 이다.
// 특별한 방법이라기보다 라벨링 할 때에도
// 순서대로 서랍장에 담아놨으니 찾기는 쉬울 것이다.
int targetNumber = 2;
print(" ' ${targetNumber+1} ' 번째에는 ' ${booksWithLabel.keys.toList()[targetNumber]} ' 이(가) 있다!");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment