> 개발-IT-인터넷/> JAVA

[해커랭크(HackerRank) JAVA 풀이] - Java Lambda Expressions

jini:) 2023. 12. 19. 09:44
728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Advanced > Java Lambda Expressions
 

HackerRank

HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical talent from anywhere!

www.hackerrank.com

 

 

이 Java 8 챌린지는 Lambda 표현식에 대한 지식을 테스트합니다!

지정된 작업을 수행하는 람다 식을 반환하는 다음 메서드를 작성합니다.

  1. PerformOperation isOdd(): 람다 식은 숫자가 홀수이면 true를 반환하고 짝수이면 false를 반환해야 합니다.
  2. PerformOperation isPrime(): 람다 식은 숫자가 소수이면 true를 반환하고 합성이면 false를 반환해야 합니다.
  3. 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
반응형