문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/250126
주어진 코드를 해석해서 틀린 부분을 찾는 유형의 문제이다!
아무래도 주어진 코드의 변수를 이해하는 것이 시작점이라는 생각이 든다.
class Solution {
public String solution(String[] storage, int[] num) {
int num_item = 0;
String[] clean_storage = new String[storage.length];
int[] clean_num = new int[num.length];
for(int i=0; i<storage.length; i++){
int clean_idx = -1;
for(int j=0; j<num_item; j++){
if(storage[i].equals(clean_storage[j])){
clean_idx = j;
break;
}
}
if(clean_idx == -1){
clean_storage[num_item] = Integer.toString(num[i]);
clean_num[num_item] = num[i];
num_item += 1;
}
else{
clean_num[clean_idx] += num[i];
}
}
// 아래 코드에는 틀린 부분이 없습니다.
int num_max = -1;
String answer = "";
for(int i=0; i<num_item; i++){
if(clean_num[i] > num_max){
num_max = clean_num[i];
answer = clean_storage[i];
}
}
return answer;
}
}
for(int j=0; j<num_item; j++){
if(storage[i].equals(clean_storage[j])){
clean_idx = j;
break;
}
}
만약 storage에 clean_storage랑 동일한 이름이 있다면 해당 index를 j로 지정한다.
if(clean_idx == -1){
clean_storage[num_item] = storage[i];
clean_num[num_item] = num[i];
num_item += 1;
}
만약 clean_idx가 -1이라면 storage 항목이 clean_storage에 없다는 의미
⇒ clean_storage에 해당 이름을 넣고 해당하는 숫자를 clean_num에 넣어주게 됨
⇒ 정리된 항목의 숫자를 1개 늘려줘야함
else{
clean_num[clean_idx] += num[i];
}
해당 문자열이 clean_storage에 있을 경우
해당 문자열에 개수를 더해주기