Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Tree
- Class
- Binary Tree
- Math
- 파이썬
- bit manipulation
- 코딩테스트
- SQL
- 구현
- sorting
- greedy
- two pointers
- Binary Search
- hash table
- array
- database
- dynamic programming
- java
- Matrix
- geometry
- Counting
- Number Theory
- string
- Data Structure
- implement
- 자바
- simulation
- Method
- Stack
- 코테
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Easy] 2605. Form Smallest Number From Two Digit Arrays 본문
코딩테스트 풀이/JAVA
[LeetCode/Easy] 2605. Form Smallest Number From Two Digit Arrays
무지맘 2023. 5. 6. 17:201. Input
1) int[] nums1
2) int[] nums2
2. Output
1) 각 배열에 있는 수를 1개씩 골라서 만들 수 있는 수 중 가장 작은 수를 반환
3. Constraint
1) 1 <= nums1.length, nums2.length <= 9
2) 1 <= nums1[i], nums2[i] <= 9
3) 각 배열에는 중복 요소가 없다.
4. Example
Input: nums1 = [4,1,3], nums2 = [5,7] -> Output: 15
Input: nums1 = [3,5,2,6], nums2 = [3,1,7] -> Output: 3
설명:
- nums1에서는 1, nums2에서는 5를 골라 15를 만든다.
- nums1과 nums2 모두 3을 포함하고 있기 때문에 3을 고르면 양쪽 배열 모두에서 숫자를 고른 것이 되므로 가장 작은 수는 3이 된다.
5. Code
1) 첫 코드(2023/05/06)
class Solution {
public int minNumber(int[] nums1, int[] nums2) {
HashSet<Integer> s1 = new HashSet<>();
int min1 = nums1[0];
for(int i : nums1){
s1.add(i);
if(min1>i) min1 = i;
}
HashSet<Integer> s2 = new HashSet<>();
int min2 = nums2[0];
for(int i : nums2){
s2.add(i);
if(min2>i) min2 = i;
}
s1.retainAll(s2);
if(s1.size()!=0){
List<Integer> list = new ArrayList<Integer>(s1);
list.sort(Comparator.naturalOrder());
return list.get(0);
}
return 10*Math.min(min1,min2) + Math.max(min1,min2);
}
}
2) 성능이 너무 구려서 다시 해본 코드(2023/05/06)
class Solution {
public int minNumber(int[] nums1, int[] nums2) {
ArrayList<Integer> list = new ArrayList<>();
int min1 = nums1[0];
for(int i:nums1){
list.add(i);
if(min1>i) min1 = i;
}
int min2 = nums2[0], min3 = Integer.MAX_VALUE;
for(int i:nums2){
if(min2>i) min2 = i;
if(list.contains(i)) min3 = Math.min(min3, i);
}
if(min3!=Integer.MAX_VALUE)
return min3;
else
return 10*Math.min(min1,min2) + Math.max(min1,min2);
}
}
- 훨씬 낫다.
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 2639. Find the Width of Columns of a Grid (0) | 2023.05.08 |
---|---|
[LeetCode/Easy] 2614. Prime In Diagonal (0) | 2023.05.08 |
[LeetCode/Easy] 2582. Pass the Pillow (0) | 2023.05.06 |
[LeetCode/Easy] 2570. Merge Two 2D Arrays by Summing Values (0) | 2023.05.06 |
[LeetCode/Easy] 2549. Count Distinct Numbers on Board (0) | 2023.05.06 |