코딩라이브러리/Dart

[Dart] 람다 함수 사용 lambda (with 백준 1181)

유니네 라이브러리 2024. 7. 18. 14:12

Dart에서는 람다 함수(Lambda Function)를 사용하여 더 간결한 코드를 작성할 수 있다.

이번 글에서는 람다 함수의 개념과 사용법을 살펴보고,

백준 1181번 문제(단어 정렬) 를 해결하면서 실전에서 활용하는 방법을 알아본다.

 

1. Dart에서 람다 함수(Lambda)란?

 

람다 함수는 익명 함수(Anonymous Function)의 간단한 표현 방식이다.

 

📌 람다 함수의 문법

(매개변수) ⇒ 단 하나의 실행 코드;

 

  • 중괄호 {} 없이 ⇒(화살표) 기호를 사용하여 표현할 수 있다.
  • 매개변수는 있을 수도 있고 없을 수도 있다.
  • 한 줄 코드만 사용할 수 있다.

📌 익명 함수와 람다 함수 비교

void main() {  
  final numbers = <double>[10, 2, 5, 0.5];

  // 람다 함수 사용
  final result = numbers.reduce((value, element) => value + element);
  
  // 익명 함수 사용
  final aResult = numbers.reduce((value, element) {
    return value + element;
  });

  print(result);  // 17.5
  print(aResult); // 17.5
}

 

차이점:

  • 람다 함수는 {} 없이 한 줄로 표현 가능
  • 익명 함수는 {} 안에서 return을 사용하여 값 반환

2. 백준 1181번 문제 풀이 (Dart 활용)

 

📌 문제 링크: 백준 1181 - 단어 정렬

 

📌 문제 설명

 

🚀 입력 조건

  • 첫째 줄: 단어 개수 N (1 ≤ N ≤ 20,000)
  • 둘째 줄부터 N개의 단어가 입력됨 (최대 50자)

🎯 출력 조건

  • 중복 제거
  • 길이가 짧은 단어부터 정렬
  • 길이가 같으면 사전 순 정렬

📌 해결 방법

 

1️⃣ 중복 제거Set() 사용

2️⃣ 사전 순 정렬sort() + compareTo() 활용

3️⃣ 길이 기준 정렬sort() 활용

 

📌 코드 구현 (람다 함수 적용)

import 'dart:io';

void main() {
  // 입력받은 단어 개수 N
  int? N = int.parse(stdin.readLineSync()!);

  // 단어 리스트 생성
  var strList = [for (var i = 0; i < N; i++) stdin.readLineSync()!];

  // 1️⃣ 중복 제거
  List<String> uniqueWords = strList.toSet().toList();

  // 2️⃣ 먼저 사전 순 정렬 (알파벳 순서)
  uniqueWords.sort((a, b) => a.compareTo(b));

  // 3️⃣ 이후 길이 기준 정렬
  uniqueWords.sort((a, b) => a.length.compareTo(b.length));

  // 4️⃣ 결과 출력
  uniqueWords.forEach((word) => print(word));
}

 

익명 함수로도 표현 가능

uniqueWords.forEach((word) {
  print(word);
});

 

3. 입력 & 출력 예시

 

✅ 입력값

13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours

 

✅ 출력값

i
im
it
no
but
more
wait
wont
yours
cannot
hesitate

 

4. 정리

 

Dart에서 람다 함수(Lambda) 사용법

백준 1181번 문제 해결 (중복 제거, 정렬, 람다 적용)

Set(), sort(), compareTo(), forEach() 활용법 익히기

 

이제 Dart에서 람다 함수를 적극적으로 활용하여 코드의 가독성을 높일 수 있다! 🚀

 

☞ 파이썬 람다함수 이전 글은 아래 링크

 

파이썬 람다 함수 lambda (with 백준 1181)

lambda (람다) 표현식 lambda 키워드로 함수로 사용할 수 있으며 일반적인 함수 정의의 편의 문법임.lambda a, b: a+b 와 같이 함수 객체가 있는 곳이면 어디나 lambda 함수가 사용될 수 있다. 제약 문법적

yuneenelife.tistory.com