페이지

2016년 12월 28일 수요일

[Algorithm] 카드


사실 이번 문제는 그렇게 어려운 문제는 아닌데 내가 놓친 부분과 새롭게 알게 된 부분이

있어서 정리를 하려한다.

이번 문제는 2^-62 ~ 2^62사이의 랜덤한 수 중 가장 갯수가 많은 수를 찾아 내는 것이다.

일단 첫번째로는 배열을 사용해서 해결하려 했는데 수의 범위가 너무 넓어서 실패 ..

그 이후에 생각한게 수들을 입력 받은 후 입력 받은 수를 sorting하고 하나씩 counting

해가는 방법으로 해결하였다.

간단한 문젠데 해결을 잘 못한게 아쉬워서 정리하였다.

위와 같은 배열이 있으면 하나씩 탐색하며 같은 갯수를 counting하는 식으로 해결하였다.

이과정에서 나는 입력을 보통 Integer.parsetoInt(String)으로 처리하는데

 Long형에 대한 입력 처리방식은 Long.parseLong(String)으로 처리해야 한다는 걸알았다.

소스코드:
import java.io.*;
import java.util.*;
public class a_11652 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[] arr = new long[N];
int cnt=0;
int res=1;
long ans=0;
for(int i=0;i<N;i++) arr[i] = Long.parseLong(br.readLine());
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
long temp=arr[0];
for(int i=0;i<N;i++){
if(arr[i]==temp){
cnt++;
if(cnt>res) {
ans = arr[i];
res=cnt;
}
}else{
temp=arr[i];
cnt=1;
}
}
System.out.println(ans);
}
}

댓글 없음:

댓글 쓰기