728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Advanced > Java Lambda Expressions
이 Java 8 챌린지는 Lambda 표현식에 대한 지식을 테스트합니다!
지정된 작업을 수행하는 람다 식을 반환하는 다음 메서드를 작성합니다.
- PerformOperation isOdd(): 람다 식은 숫자가 홀수이면 true를 반환하고 짝수이면 false를 반환해야 합니다.
- PerformOperation isPrime(): 람다 식은 숫자가 소수이면 true를 반환하고 합성이면 false를 반환해야 합니다.
- PerformOperation isPalindrome(): 람다 식은 숫자가 회문이면 true를 반환하고 그렇지 않으면 false를 반환해야 합니다.
Input Format
입력은 편집기의 잠긴 스텁 코드에 의해 처리됩니다.
Output Format
편집기의 잠긴 스텁 코드는 T 라인의 출력을 인쇄합니다.
Sample Input
첫 번째 줄은 정수 T(테스트 케이스의 수)를 포함합니다.
T 후속 라인은 각각 공백으로 구분된 2개의 정수 형태로 테스트 케이스를 설명합니다.
첫 번째 정수는 확인할 조건을 지정합니다(홀/짝은 1, 프라임은 2, 회문은 3). 두 번째 정수는 확인할 숫자를 나타냅니다.
5
1 4
2 5
3 898
1 3
2 12
Sample Output
EVEN
PRIME
PALINDROME
ODD
COMPOSITE
반응형
Code
import java.io.*;
import java.util.*;
interface PerformOperation {
boolean check(int a);
}
class MyMath {
public static boolean checker(PerformOperation p, int num) {
return p.check(num);
}
// Write your code here
public static PerformOperation isOdd() {
return n -> ( n%2 == 1 );
}
public static PerformOperation isPrime() {
return n -> (new java.math.BigInteger(String.valueOf(n))).isProbablePrime(100);
}
public static PerformOperation isPalindrome() {
return n -> String.valueOf(n).equals(new StringBuilder(String.valueOf(n)).reverse().toString());
}
}
public class Solution {
public static void main(String[] args) throws IOException {
MyMath ob = new MyMath();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
PerformOperation op;
boolean ret = false;
String ans = null;
while (T--> 0) {
String s = br.readLine().trim();
StringTokenizer st = new StringTokenizer(s);
int ch = Integer.parseInt(st.nextToken());
int num = Integer.parseInt(st.nextToken());
if (ch == 1) {
op = ob.isOdd();
ret = ob.checker(op, num);
ans = (ret) ? "ODD" : "EVEN";
} else if (ch == 2) {
op = ob.isPrime();
ret = ob.checker(op, num);
ans = (ret) ? "PRIME" : "COMPOSITE";
} else if (ch == 3) {
op = ob.isPalindrome();
ret = ob.checker(op, num);
ans = (ret) ? "PALINDROME" : "NOT PALINDROME";
}
System.out.println(ans);
}
}
}
람다 표현식 (Lambda Expressions)
함수형 프로그래밍 스타일을 도입하여 코드를 간결하고 유연하게 작성할 수 있도록 해주는 기능.
특징
1. 익명 함수 : 이름이 없는 함수. 메서드처럼 매개변수와 반환값을 가진다.
2. 간결한 문법 : 불필요한 부분을 최소화하여 코드를 간결하게 만든다.
3. 함수형 인터페이스와의 관련 : 함수형 인터헤이스의 인스턴스로 취급된다.
기본구조
([파라미터 목록]) -> {실행 코드}
// 기존방식 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("Hello, world!"); } }; new Thread(runnable).start(); // 람다 표현식 Runnable runnable = () -> { System.out.println("Hello, world!"); }; new Thread(runnable).start();
람다 표현식에서
() : 파라미터 없음
-> : 구분자
{} : 중괄호 안에 코드 위치. 해당 함수의 몸체
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > JAVA' 카테고리의 다른 글
[해커랭크(HackerRank) JAVA 풀이] - Java SHA-256 (2) | 2023.12.26 |
---|---|
[해커랭크(HackerRank) JAVA 풀이] - Java MD5 (1) | 2023.12.21 |
[해커랭크(HackerRank) JAVA 풀이] - Covariant Return Types (0) | 2023.12.11 |
[해커랭크(HackerRank) JAVA 풀이] - Java Annotations (1) | 2023.12.01 |
[해커랭크(HackerRank) JAVA 풀이] - Java Visitor Pattern (0) | 2023.11.29 |