Last active
October 8, 2021 05:32
-
-
Save gwanhyeong/a2275a9aed330b2380e6d5ee2f7b49f6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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