일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 | 29 | 30 | 31 |
- Java
- 카카오블라인드코딩테스트
- SWEA
- React
- JPA
- 달빛클럽 1기
- 달빛클럽1기
- 백준
- dfs
- ReactJS로 영화 웹 서비스 만들기
- 재귀
- Stack
- 리액트
- React.js
- 인플레이션에서 살아남기
- 달빛캠퍼스
- Array
- BOJ
- SoftwareExpertAcademy
- 완전탐색
- 자바
- 달빛클럽
- 알고리즘
- programmers
- 경제공부
- 노마드코더 강의
- HashMap
- 노마드코더
- Algorithm
- 프로그래머스
- Today
- Total
th42500의 TIL
[Java] Summer/Winter Coding(~2018) - 숫자 게임 (Lv 3) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12987
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✔ 입출력 예시
1️⃣ 첫번째 시도
❓ 풀이 방법
1️⃣ A와 B 배열을 모두 정렬
👉 Int형 배열 타입을 내림차순으로 정렬하기 위해서는 Integer 타입으로 바꿔서 정렬해야하는 과정을 거쳐야 하므로 그냥 오름차순으로 정렬
2️⃣ A와 B를 2중 for문으로 순회하면서 A의 수보다 B가 더 클때에만 answer++ & B순회 break
✔ 소스코드
package lv3;
import java.util.Arrays;
public class Solution { // 숫자 게임
private int solution(int[] A, int[] B) {
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
for (int i = A.length-1; i >= 0; i--) {
for (int j = B.length-1; j >= 0; j--) {
if(A[i] < B[j]) {
answer++;
A[i] = -1;
B[j] = -1;
break;
}
}
}
return answer;
}
public static void main(String[] args) {
Solution main = new Solution();
int[] A = {5, 1, 3, 7};
int[] B = {2, 2, 6, 8};
System.out.println(main.solution(A, B));
}
}
❗ 실행 결과
👉 정확도 테스트는 모두 통과했으나, 효율성 테스트 통과 ❌
이렇게 한번에 풀린다면 Lv3 일리가 없지...🤦♀️ 다시 도전🔥
2️⃣ 두번째 시도
❓ 풀이 방법
1️⃣ A와 B 배열을 모두 정렬
👉 Int형 배열 타입을 내림차순으로 정렬하기 위해서는 Integer 타입으로 바꿔서 정렬해야하는 과정을 거쳐야 하므로 그냥 오름차순으로 정렬
2️⃣ A와 B를 2중 for문으로 순회하면서 A의 수보다 B가 더 클때에만 answer++ & B순회 break
👉 단, B를 순회할 때 이전에 이미 게임을 위해 사용된 카드들은 살펴보지 않기 위해 idx변수부터 탐색
✔ 소스 코드
package lv3;
import java.util.Arrays;
public class Solution { // 숫자 게임
public int solution(int[] A, int[] B) {
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
int idx = B.length-1;
for (int i = A.length-1; i >= 0; i--) {
for (int j = idx; j >= 0; j--) {
if(A[i] < B[j]) {
answer++;
A[i] = -1;
B[j] = -1;
idx = j-1;
break;
}
}
}
return answer;
public static void main(String[] args) {
Solution main = new Solution();
int[] A = {5, 1, 3, 7};
int[] B = {2, 2, 6, 8};
System.out.println(main.solution(A, B));
}
}
❗ 실행 결과
👉 정확성 테스트와 효율성 테스트 모두 통과 ⭕
'Algorithm > Programmers' 카테고리의 다른 글
[Java] Summer/Winter Coding(~2018) - 배달 (Lv 2) (0) | 2022.12.16 |
---|---|
[Java] 연습문제 - 제일 작은 수 제거하기 (Lv 1) (0) | 2022.12.16 |
[Java] 연습문제 - 명예의 전당 (1) (Lv 1) (0) | 2022.12.01 |
[Java] 연습문제 - 숫자 카드 나누기(Lv 2) (0) | 2022.11.22 |
[Java] 2018 KAKAO BLIND RECRUITMENT - [1차] 비밀지도 (feat. StringIndexOutOfBoundsException) (Lv 1) (0) | 2022.11.11 |