코테/프로그래머스

[프로그래머스/Level3] 숫자 게임 (JAVA)

imname1am 2024. 3. 4. 11:29
반응형

📖 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

💡  풀이 방식

1. 배열 A와 B를 오름차순 정렬한다.

2. A 팀에서 가장 큰 숫자를 가진 사람이 B 팀에서 가장 큰 숫자를 가진 사람보다 숫자가 클 경우, 점수를 얻지 못 한다. 그 반대로 B팀이 클 경우, 점수를 획득한다. (뒤쪽에서부터 앞으로)

- 점수를 획득하면, A팀의 다음 사람과 B팀의 다음 사람을 비교한다.

- 점수를 획득하지 못 하면, A팀의 다음 사람과 B팀의 현재 사람을 비교한다.

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
 
class Solution {
    public int solution(int[] A, int[] B) {
        int answer = 0;
                        
        Arrays.sort(A);
        Arrays.sort(B);
        
        // ! 끝에서부터 ! A를 이길 수 있는 B 찾기
        int idx = A.length - 1;
 
        for(int i = A.length - 1 ; i >= 0 ; i--) {
            if(B[idx] > A[i]) {    // 이기는 경우
                answer++;
                idx--
            }
        }
                
        return answer;
    }
}
 
cs

 

 

 

 

➕ 다른 풀이 방식

 

[프로그래머스 level_3] 숫자 게임 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/12987# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기

tosuccess.tistory.com

배열 A와 B를 모두 오름차순 정렬하고, 만약 B가 이긴다면, A와 B의 다음 원소끼리 비교하게 하셨다.

비기거나 진다면, A의 원소는 그대로 두고, B의 원소만 다음 원소로 비교하게 하셨다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class solution(int[] A, int[] B) {
 
    Arrays.sort(A);
    Arrays.sort(B);
 
    int aPoint = 0;
    int bPoint = 0;
    int result = 0;
 
    for (int i = 0; i < A.length; i++) {
        if (A[aPoint] > B[bPoint]) {    // 지면, B의 원소만 다음으로 이동
            bPoint++;
        }
        else if (A[aPoint] == B[bPoint]) { // 비기면, B의 원소만 다음으로 이동
            bPoint++;
        }
        else {    // 이기면, A팀의 다음 사람과 B팀의 다음 사람 비교
            aPoint++;
            bPoint++;
            result++;
        }
    }
 
    return result;
}
cs

💦 어려웠던 점

- 정렬까지 하고 그냥 각 인덱스마다 값을 비교했는데 그게 아니었다.

 

 

🧐 새로 알게 된 내용

- 끝에서부터 두 배열의 인덱스 조절하며 진행하기

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

프로그래머스 - 숫자게임(Java, LV3)

 

woongsin94.tistory.com

 

[프로그래머스 Level 3] 숫자 게임

문제 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작

cvillain.tistory.com

 

반응형