풀이
- 처음 해당 문제를 해결하고자 했을 때는
- 맵을 사용해서 해결하고자 했지만 수치 변경 이외엔 너무 불편하여
- 배열을 사용하여 해결하고자 했으며
- 각 팀 이름에 대한 비율을 새로 계산해야 했기에
- deepcopy를 사용하여 해결.
import java.io.*;
import java.util.*;
public class 팀이름정하기 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String yeon = br.readLine();
ArrayList<Integer> li = new ArrayList<>(Collections.nCopies(4,0));
find(yeon, li);
int n = Integer.parseInt(br.readLine());
ArrayList<String> name_li = new ArrayList<>();
for (int i = 0; i < n; i++) name_li.add(br.readLine());
Collections.sort(name_li);
Long result = 0L;
int idx = 0;
for (int i = 0; i < n; i++) {
ArrayList<Integer> new_li = (ArrayList<Integer>) li.clone();
find(name_li.get(i), new_li);
Long gob = 1L;
for (int j = 0; j < 3; j++) {
for (int k = j+1; k < 4; k++) {
gob *= (long) (new_li.get(j)+new_li.get(k));
}
}
if (gob%100 > result) {
result = gob%100;
idx = i;
}
}
System.out.println(name_li.get(idx));
}
public static void find(String name, ArrayList<Integer> li) {
for (char i: name.toCharArray()) {
if (i == 'L') li.set(0, li.get(0)+1);
else if (i == 'O') li.set(1, li.get(1)+1);
else if (i == 'V') li.set(2, li.get(2)+1);
else if (i == 'E') li.set(3, li.get(3)+1);
}
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 1333번] 부재중 전화 (0) | 2024.01.02 |
---|---|
[백준, 파이썬, 1333번] 부재중 전화 (0) | 2024.01.02 |
[백준, 파이썬, 1296번] 팀 이름 정하기 (0) | 2024.01.02 |
[백준, 자바, 1225번] 이상한 곱셈 (0) | 2023.12.29 |
[백준, 파이썬, 1225번] 이상한 곱셈 (0) | 2023.12.29 |