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
- Counting
- Binary Search
- Matrix
- implement
- hash table
- bit manipulation
- geometry
- sorting
- Stack
- Class
- Data Structure
- simulation
- SQL
- 코딩테스트
- array
- Math
- 파이썬
- greedy
- 자바
- Method
- Binary Tree
- Number Theory
- 코테
- string
- dynamic programming
- two pointers
- database
- java
- 구현
Archives
- Today
- Total
코린이의 소소한 공부노트
[LeetCode/Medium] 384. Shuffle an Array 본문
목표: 배열의 요소를 랜덤하게 섞는 클래스 구현
- 생성자
– reset(), shuffle()
1. Input
- 생성자: int[] nums
- reset(): 없음
- shuffle(): 없음
2. Output
- reset(): 맨 처음으로 받은 배열
- shuffle(): 배열의 요소를 랜덤하게 섞은 결과
3. Constraint
1) 1 <= nums.length <= 50
2) - 10^6 <= nums[i] <= 10^6
3) nums에는 중복 요소가 없다.
4) 최대 10^4번의 메서드 호출이 있다.
5) shuffle()로 만들 수 있는 모든 배열은 나올 확률이 전부 동일해야 한다.
4. Example
Solution solution = new Solution([1, 2, 3]); // 처음으로 받은 배열: [1,2,3]
solution.shuffle(); // 맨 아래에 있는 모든 경우의 배열 중 1개를 반환
solution.reset(); // [1,2,3]
solution.shuffle(); // 맨 아래에 있는 모든 경우의 배열 중 1개를 반환
// 모든 경우의 수
[1,2,3] [1,3,2] [2,1,3] [2,3,1] [3,1,2] [3,2,1]
5. Code
1) 첫 코드(2023/02/15)
class Solution {
int[] deck;
public Solution(int[] nums) {
deck = nums;
}
public int[] reset() {
return deck;
}
public int[] shuffle() {
int[] answer = Arrays.copyOf(deck, deck.length);
for(int i=0 ; i<answer.length ; i++){
int x = (int)(Math.random()*answer.length), tmp = answer[x];
answer[x] = answer[i];
answer[i] = tmp;
}
return answer;
}
}
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 409. Longest Palindrome (0) | 2023.02.19 |
---|---|
[LeetCode/Medium] 398. Random Pick Index (0) | 2023.02.16 |
[프로그래머스/Lv.1] 가장 가까운 같은 글자 (0) | 2023.02.14 |
[LeetCode/Easy] 383. Ransom Note (0) | 2023.02.14 |
[LeetCode/Easy] 382. Linked List Random Node (0) | 2023.02.14 |