반응형
📖 문제
💡 풀이 방식
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 |
➕ 다른 풀이 방식
배열 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 |
(참고)
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level2] 문자열 압축 (JAVA) (0) | 2024.03.04 |
---|---|
[프로그래머스/Level2] 거리두기 확인하기 (JAVA) (0) | 2024.03.04 |
[프로그래머스/Level2] 순위 검색(JAVA) (0) | 2024.03.03 |
[프로그래머스/Level2] 빛의 경로 (JAVA) (0) | 2024.03.03 |
[프로그래머스/Level2] 수식 최대화 (JAVA) (0) | 2024.02.29 |