문제 링크:
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13zo1KAAACFAYh
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
주어진 1000개의 숫자 중에서 가장 많이 출현한 빈도가 높은 숫자를 구하는 것이다.
수들을 입력받고 정렬한뒤 count를 관리하고
count의 수가 저장해둔maxCount 이상이라면 수를 max에 넣어두도록하였다.
10개중 9개가 풀렸을때는 뭔가 했는데 3번에서 79가 떠야하는데 79가 떴다.
알고보니 count > maxCount라고 해뒀는데
77과 79의 빈도가 같았다.
최빈값의 빈도가 같다면 높은 숫자를 출력해주어야 했다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.stream.Collectors;
class Solution{
static int count = 0;
static int maxCount = 0;
static int x = 0;
static int max = Integer.MIN_VALUE;
public static void main(String args[]) throws Exception
{
int T;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for(int test_case = 1; test_case <= T; test_case++){
int t = Integer.parseInt(br.readLine());
max = Integer.MIN_VALUE;
maxCount = 0;
count = 0;
StringTokenizer st = new StringTokenizer(br.readLine()," ");
List<Integer> stus = new ArrayList<Integer>();
while(st.hasMoreTokens()) {
stus.add(Integer.parseInt(st.nextToken()));
}
stus = stus.stream().sorted().collect(Collectors.toList());
x =stus.get(0);
stus.stream().forEach(i ->{
if(x == i) {
count++;
if(count >= maxCount) {
maxCount = count;
max = i;
}
}
else {
count = 1;
x = i;
}
});
sb.append("#").append(test_case).append(" ").append(max).append("\n");
}
System.out.println(sb);
}
}
반응형
'SWEA' 카테고리의 다른 글
SWEA 14413. 격자판 칠하기 (0) | 2023.11.16 |
---|---|
SWEA 2001. 파리 퇴치 (0) | 2023.11.16 |
SWEA 1249. [S/W 문제해결 응용] 4일차 - 보급로 (0) | 2023.11.06 |
SWEA 1954. 달팽이 숫자 Java (0) | 2023.11.05 |
SWEA 1244 최대상금 JAVA (0) | 2023.11.03 |