DLife Planet

[코딩연습] 해시2 프로그래머스 - 전화번호 목록 본문

카테고리 없음

[코딩연습] 해시2 프로그래머스 - 전화번호 목록

Western_Gem 2020. 12. 1. 15:36
반응형

솔직히, 가독성이 무진장 떨어지는 질문... 첨에 뭔소린지 몰랏고, 코드 실행 테스트 이후 최종 제출에서 틀리는거 보고 다시 읽었을때 제대로 이해함 "N번쨰 배열의 String에 속한 모든 숫자들이 다른 값들의 첫글자에 있냐 없냐를 물어보는"질문 입니다. 

어휴... 어려워라, 저거 번역하는 분도 엄청 힘들겠네요. 프로그래머스 화이팅!

import java.util.Arrays;

class Solution {
    public boolean solution(String[] phone_book) {
        Arrays.sort(phone_book);
        for (int i = 0; i < phone_book.length; i++){        
            for (int j = i+1; j < phone_book.length; j++){
                    if( phone_book[i].startsWith(phone_book[j])) return false;
                    if( phone_book[j].startsWith(phone_book[i])) return false;                 
            }
        }
        return true;
    }
}

솔직히, N(Arrays.sort()) + NP2(이중포문) = NXN 경우의수 연산이라 성능은 썩... 한숨만 나오는 코드지만

접두어 해석을 똑바로 못해서 알고리즘 톡방 도움받아서 겨우 풀었네요 ㅠ

 

나란 놈이란... 아직 갈길이 멀구나... 3년차 허세 버리고 진짜 기초부터 다시 공부해야 할듯 싶네요.

 

테스트케이스 더 복잡해져서 예전 해시맵풀이법이 틀릴 가능성이 높다고 하네요. 해시맵 기반으로 이문제 최근 테스트를 통과하신 분이 있다면, 댓글로 풀이 공유해주신다면 감사하겠습니다 (--)(__)(--) 현자님들께 드리는 정중한 부탁드립니다.

 

class Solution {
    public boolean solution(String[] phone_book) {
        
        Arrays.sort(phone_book);
    
         for (int i = 0; i < phone_book.length; i++){        
             for (int j = i+1; j < phone_book.length; j++){
                     if( phone_book[i].charAt(0) == phone_book[j].charAt(0)){
                         return false;
                     }
             }
         }
        
        
        return true;
    }
// 문제를 잘못 이해해서... 첫번째 스트링값만 따진 풀이... 3개 경우의수는 통과 되지만
// 실행하면 60점 짜리라고 뜰거에요
// 틀린 풀이지만... 그래도 추억이니 포스팅에 남게요
반응형
Comments