// you can also use imports, for example:
import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int[] arr = new int[N];
int max = 0;
Arrays.fill(arr, 0);
for(int i = 0; i < A.length; i++){
if(A[i] > N){
Arrays.sort(arr);
max = arr[arr.length-1];
Arrays.fill(arr, max);
}else{
arr[A[i]-1]++;
}
}
return arr;
}
}
생각해보니 Arrays fill 쓰면 될 거 같아서 써봤다.
// you can also use imports, for example:
import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int[] arr = new int[N];
int max = 0;
Arrays.fill(arr, 0);
for(int i = 0; i < A.length; i++){
if(A[i] > N){
Arrays.fill(arr, max);
}else{
arr[A[i]-1]++;
if(max < arr[A[i]-1]){
max = arr[A[i]-1];
}
}
}
return arr;
}
}
두 번째 코드는 sort 하는 부분을 없애 봤음.
여전히 타임아웃 오류가 난다...
// you can also use imports, for example:
import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
int max = 0;
int[] arr = new int[N];
for(int i = 0; i< A.length; i++){
if(A[i] == N+1){
Arrays.fill(arr, max);
}else{
arr[A[i]-1]++;
max = Math.max(max, arr[A[i]-1]);
//두개 중에 큰거 max로 저장
}
}
return arr;
}
}
음... 비교하는 걸 Math 함수로 짠 분이 계셔서 저걸로 바꿔봤다.
그래도 여전히 점수는 똑같음.. 77%....
.
검색을 좀 해보니 Arrays.fill 쓰지 말라고 해서 수정...
드디어 대망의 100% 코드...★
// you can also use imports, for example:
import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
int max = 0;
int maxValue = 0;
int maxCounter = 0;
int[] arr = new int[N];
for(int i = 0; i< A.length; i++){
if(A[i] == N+1){
maxCounter++;
maxValue = max;
//Arrays.fill(arr, max);
}else{
if(maxCounter!=0 && arr[A[i]-1] < maxValue){
arr[A[i]-1] = maxValue;
}
arr[A[i]-1]++;
max = Math.max(max, arr[A[i]-1]);
//두개 중에 큰거 max로 저장
}
}
for(int i = 0; i < arr.length; i++){
if(arr[i] < maxValue){
arr[i] = maxValue;
}
}
return arr;
}
}
이거 코드량에 비해 생각할 게 많아서 시간이 오래 걸렸다.
maxCounter는 없앨 수 있을 듯
답글삭제