Algorithm

Codingbat - Java] Logic2 - blackjack

hololo 2021. 10. 7. 21:42

문제

parameter

  • a, b : 0 이상의 두 정수

description

Given 2 int values greater than 0, return whichever value is nearest to 21 without going over. Return 0 if they both go over.

blackjack(19, 21) → 21
blackjack(21, 19) → 21
blackjack(19, 22) → 19

1) 두 숫자가 21을 넘으면 0반환
2) 21을 넘지 않은 숫자 중, 21에 제일 가까운 숫자 반환

풀이

1) 두 숫자가 21을 넘으면 0을 리턴
2) a만 21을 넘으면 b를 리턴
3) b만 21을 넘으면 a를 리턴
4) 21에서 a와 b를 빼서 차이가 작은 값을 리턴

Show Solution

와 나는 진짜 별 거 아니구나...라고 생각이 되는 풀이과정......

아예 21 넘는 숫자를 0으로 만들고, 둘 크기를 비교해서 더 큰 것(21에 가까운 것)을 반환한다.

 

추가 스터디 정리

1. Math

참고 자료 : https://mine-it-record.tistory.com/139

CODE 설명 예시
Math.abs() 절대값을 구할 때

- static int abs(int a)
- static double abs(double a)
- static float abs(float a)
- static long abs(long a)
int intNum = -15;
double doubleNum = -3.14;

System.out.println( Math.abs(intNum) ); // 15
System.out.println( Math.abs(doubleNum) ); 
// 3.14
Math.max() 두 인자 중 큰 값 리턴

- static int max(int a , int b)
- static double max(double a , double b)
- static float max(float a , float b)
- static long max(long a , long b)
System.out.println( Math.max(26,2) ); // 26
System.out.println( Math.max(
3.1472,1.2) ); // 3.1472
Math.min() 두 인자 중 작은 값 리턴

- static int min(int a , int b)
- static double min(double a , double b)
- static float min(float a , float b)
- static long min(long a , long b)
(생략)
Math.random() 0.0 ~ 1.0 사이의 랜덤한 값을 반환

- static double random()

기본형이 double이기 때문에 정수형으로 변환을 해줘야 정수형 값을 반환함

1부터 뽑고싶으면 +1을 해줘야함

System.out.println( Math.random() );
System.out.println( Math.random() * 
10 );
// (0.xxx... ~ 9.xxx 까지의 값 반환)

System.out.println( (
int) Math.random() * 10 );
//( 0부터~9까지의 값 반환 )
//*100이면 0부터~99까지의 값 반환

System.out.println( (
int) Math.random() * 10 +1 );
//( 1부터~10까지의 값 반환 )

 

추가 Math 함수들

참고 자료 : https://lktprogrammer.tistory.com/114