코린이의 소소한 공부노트

[LeetCode/Easy] 2347. Best Poker Hand 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2347. Best Poker Hand

무지맘 2023. 1. 16. 02:00

1. Input

1) int[] ranks

- ranks[i]i번째 카드의 숫자를 뜻한다.

2) char[] suits

- suits[i]i번째 카드의 무늬를 뜻한다.

 

2. Output

1) 갖고 있는 카드를 이용해서 아래 타입들을 만들어볼 때, 가장 높은 타입을 문자열로 반환

// 타입

- "Flush": 5장 모두 같은 무늬

- "Three of a Kind": 3장이 같은 숫자

- "Pair": 2장이 같은 무늬

- "High Card": 아무 카드 1

 

3. Constraint

1) ranks.length == suits.length == 5

2) 1 <= ranks[i] <= 13

3) 'a' <= suits[i] <= 'd'

4) 5장의 카드 중 같은 카드는 없다.

 

4. Example

Input: ranks = [4,4,2,4,4], suits = ["d","a","a","b","c"] -> Output: "Three of a Kind"

설명: 제시된 타입을 만들 수 있는 경우는 총 5가지이다.

- 1, 2, 4번째 카드: d4, a4, b4 -> Three of a Kind. 이 조합은 (1,2,5), (1,4,5), (2,4,5)도 가능하다.

- 2, 3번째 카드: a4, a2 -> Pair

- 이 중 가장 높은 Three of a Kind를 반환한다.

 

5. Code

1) 첫 코드(2022/08/04)

import java.util.*;

int count = 0;
char c = suits[0];
for(int i=1 ; i<5 ; i++){
    if(suits[i]==c)
        count++;
}
if(count==4)
    return "Flush";

Arrays.sort(ranks);
for(int i=0 ; i<3 ; i++){
    if(ranks[i]==ranks[i+1] && ranks[i+1]==ranks[i+2])
        return "Three of a Kind";
}

for(int i=0 ; i<4 ; i++){
    if(ranks[i]==ranks[i+1])
        return "Pair";
}

return "High Card";