Skip to content

Instantly share code, notes, and snippets.

@gwanhyeong
Last active October 8, 2021 05:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gwanhyeong/a2275a9aed330b2380e6d5ee2f7b49f6 to your computer and use it in GitHub Desktop.
Save gwanhyeong/a2275a9aed330b2380e6d5ee2f7b49f6 to your computer and use it in GitHub Desktop.
class Trader {
String name;
String city;
Trader(this.name, this.city);
}
class Transaction {
Trader trader;
int year;
int value;
Transaction(this.trader, this.year, this.value);
}
final transactions = [
Transaction(Trader("Brian", "Cambridge"), 2011, 300),
Transaction(Trader("Raoul", "Cambridge"), 2012, 1000),
Transaction(Trader("Raoul", "Cambridge"), 2011, 400),
Transaction(Trader("Mario", "Milan"), 2012, 710),
Transaction(Trader("Mario", "Milan"), 2012, 700),
Transaction(Trader("Alan", "Cambridge"), 2012, 950),
];
void printDivider() {
const divider = '------------';
print(divider);
}
void main() {
// 1. 2011년에 일어난 모든 트랜잭션을 찾아 값을 오름차순으로 정리하여 나열하시오
(List.of(transactions.where((e) => e.year == 2011))
..sort((a, b) => a.value.compareTo(b.value)))
.forEach((e) => print(e.value));
printDivider();
// 2. 거래자가 근무하는 모든 도시를 중복 없이 나열하시오
transactions.map((e) => e.trader.city).toSet().forEach((e) => print(e));
printDivider();
// 3. 케임브리지에서 근무하는 모든 거래자를 찾아서 이름순으로 정렬하여 나열하시오
(List.of(transactions
.where((e) => e.trader.city == 'Cambridge')
.map((e) => e.trader.name))
..sort())
.toSet()
.forEach((e) => print(e));
printDivider();
// 4. 모든 거래자의 이름을 알파벳순으로 정렬하여 나열하시오
(List.of(transactions.map((e) => e.trader.name))..sort())
.toSet()
.forEach((e) => print(e));
printDivider();
// 5. 밀라노에 거래자가 있는가?
// print(transactions.where((e) => e.trader.city == 'Milan').isNotEmpty);
// any를 써서 발견 이후의 의미없는 연산을 없앨 수 있다
print(transactions.any((e) => e.trader.city == 'Milan'));
printDivider();
// 6. 케임브리지에 거주하는 거래자의 모든 트랙잭션값을 출력하시오
for (var t in transactions.where((e) => e.trader.city == 'Cambridge')) {
print(t.value);
}
printDivider();
// 7. 전체 트랜잭션 중 최대값을 얼마인가?
print(transactions.reduce((v, e) => v.value > e.value ? v : e).value);
printDivider();
// 8. 전체 트랜잭션 중 최소값은 얼마인가?
print(transactions.reduce((v, e) => v.value < e.value ? v : e).value);
printDivider();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment