알고리즘
[백준] 11652번 카드 _ JAVA ( 주석 설명 ) 본문
풀이
1) 문제의 입력값 범위가 -2^62 ~ 2^62 까지이므로 배열의 타입은 Long 으로 설정한다.
2) Arrays.sort() 로 정렬을 한다.
3) 주어지는 입력값이 1개일 수 있으므로 초기값은 ary[0]으로 잡는다.
4) ary[i].eqauls(ary[i+1])로 가장 많이 들고 있는 정수 카드를 찾는다.
배워가는 것
//getOrDefault
//지정된 키가 매핑된 값을 반환하거나, 매핑이 없는 경우 defaultValue를 반환한다.
//중복 카드 수가 늘어나면 +1을 한다.
map.put(key, map.getOrDefault(key, 0)+1);
1번(정렬)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); //가지고 있는 숫자 카드의 개수
Long[] ary = new Long[N]; //카드 숫자 저장 //범위가 2^62까지이므로 Long 으로 생성
for(int i=0;i<N;++i){
ary[i] = Long.valueOf(br.readLine());
}
Arrays.sort(ary); //카드 정렬
int max = 0;
Long result = ary[0]; //주어지는 입력값이 1개일 수 있으므로 초기값은 ary[0]으로 잡는다.
int count = 0;
for(int i=0;i<N-1;++i){
if(ary[i].equals(ary[i+1])){
count++; //카드가 같을 시 count 한다.
if(max<count){ //가장 많이 가지고 있는 정수 카드 갱신
max = count;
result = ary[i]; //해당 인덱스 값 저장
}
}
else
count = 0;
}
System.out.println(result);
}
}
2번(Map / key : 카드의 숫자, value : 카드 개수)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); //가지고 있는 숫자 카드의 개수
//key : 가지고 있는 카드의 숫자
//value : 해당 숫자 카드의 개수
HashMap<Long, Integer> map = new HashMap<>();
for(int i=0;i<N;++i){
Long key = Long.parseLong(br.readLine());
//getOrDefault
//지정된 키가 매핑된 값을 반환하거나, 매핑이 없는 경우 defaultValue를 반환한다.
//중복 카드 수가 늘어나면 +1을 한다.
map.put(key, map.getOrDefault(key, 0)+1);
}
int max = 0;
Long result = Long.valueOf(0);
for(Long key : map.keySet()){
if(map.get(key)>max){ //가장 많이 가지고 있는 카드를 알아낸다.
max = map.get(key);
result = key;
}
else if(map.get(key)==max){
result = Math.min(result, key); //카드 수가 같을 경우 key 값이 더 작은 것으로 출력한다.
}
}
System.out.println(result);
}
}
'백준 - JAVA > 정렬' 카테고리의 다른 글
[백준] 11004번 K번째 수 _ JAVA ( 주석 설명 ) (0) | 2023.03.09 |
---|---|
[백준] 10825번 국영수 _ JAVA ( 주석 설명 ) (0) | 2023.03.06 |
[백준] 24060번 : 알고리즘 수업 - 병합 정렬 1 _ JAVA ( 주석 설명 ) (0) | 2023.02.13 |
[백준] 18870번 : 좌표 압축 _ JAVA ( 주석 설명 ) (0) | 2023.02.10 |
[백준] 10814번 : 나이순 정렬 _ JAVA ( 주석 설명 ) (0) | 2023.02.10 |