-
[알고리즘] 프로그래머스 0단계 - 8번Algorithm 2024. 4. 12. 17:56
문제 설명
선빈이는 게임을 즐기던 중 가지고 있는 물건이 너무 많아 창고 정리를 하기로 했습니다. 선빈이가 보유한 게임 속 창고는 여러 칸으로 나누어져 있고 각 칸에는 물건들이 담겨있습니다. 창고를 정리할 방법을 고민하던 선빈이는 같은 물건이 여러 칸에 나누어 들어있는 것을 발견하고 우선 같은 물건끼리 최대한 겹쳐쌓는 방식으로 창고를 정리하기로 했습니다. 선빈이의 창고에 들어있는 물건의 이름과 개수는 리스트 형태로 주어지며, 한 칸에 겹쳐질 수 있는 물건의 개수에는 제한이 없다고 가정합니다.
예시각 물건 배열 storage = ["pencil", "pencil", "pencil", "book"]
각 물건 수량 배열 num = [2, 4, 3, 1]
중복 물건 하나로 합친 배열 clean_storage = ["pencil", "book"]
중복 물건 하나의 수량으로 합친 배열 clean_num = [9, 1]
입출력 예시
num storage result ["pencil", "pencil", "pencil", "book"] [2, 4, 3, 1] pencil ["doll", "doll", "doll", "doll"] [1, 1, 1, 1] doll ["apple", "steel", "leaf", "apple", "leaf"] [5, 3, 5, 3, 7] leaf ["mirror", "net", "mirror", "net", "bottle"] [4, 1, 4, 1, 5] mirror 디버깅(Debugging)은 이미 완성된 코드에서 버그를 찾아 수정하는 문제 타입입니다. 1줄만 수정하여 버그를 고치세요. 2줄 이상 수정할 경우, 실행 결과에 에러 메시지가 표시됩니다. 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; // 중복 아이템 없는경우의 -1 for(int j=0; j<num_item; j++){ if(storage[i].equals(clean_storage[j])){ // 중복아이템 있는 경우 해당 인덱스로 변경 clean_idx = j; break; } } if(clean_idx == -1){ // 중복 아이템 없는경우 추가 // 아래 부분을 수정하면 정상 출력 된다. // 기존에는 Integer.toString(num[i]) 되어 있어서 배열에 string이 아닌 숫자타입이 저장됬다. clean_storage[num_item] = storage[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; } }
기존에 작성된 코드는 처음 봤을때 주석하나 안달려서 의도가 명확히 보이지않아 보는데 시간이 걸렸다.
생각했을때 위 코드에서 부족한점
1. 배열 변수명 : clean_num나 clean_storage은 배열인데 s라던지 arr를 붙여서 배열인지 명확히 보여주는게 좋을 것 같다.
2. 변수명 부정확 : num도 사실 좀 안맞는게 cnt나 count로 정확히 수량을 담는 배열이라고 표시하는게 좋아보인다. 단순히 num이라고 표시하면 숫자로만 보인다.
아마 컬렉션 프레임워크를 써서 Map형태로 저장하는게 좀 더 간결하고 가독성이 있을 것 같다.
'Algorithm' 카테고리의 다른 글
[알고리즘] 프로그래머스 0단계 - 6번 (0) 2024.04.16 [알고리즘] 프로그래머스 0단계 - 7번 (0) 2024.04.15 [묘공단] 코딩 테스트 합격자 되기 챕터 1 ~ 5 (0) 2024.04.14 [알고리즘] 신고결과받기 (0) 2023.05.18