• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

Unique Email Addresses 질문 드립니다.

21.04.07 18:22 작성 조회수 83

1

안녕하세요, 강사님.

Unique Email Addresse 강의 보던중 궁금한점이 있어 질문 드립니다.

저는 replace 함수를 사용해서 구현해 보았는데요.

StringBuilder 를 사용하는 것이 코테에서 더 높은 점수를 받는지 궁금합니다.

StringBuilder 말고도.. 다른 코테에서 가산점을 받을 만한 내용들이 있을까요?

예를들면 필요한 경우 함수를 만들어 호출하거나 하는 등..의 내용이요.

public static int numUniqueEmails(String[] emails){
        int result = 0;

        Set<Stringset = new HashSet<>();
        
        for(String email: emails) {
            String tmpLocal = makeLocalName(email);
            String tmpDomain = makeDomainName(email);

            set.add(tmpLocal+tmpDomain);
        }


        for(int i=0i<emails.lengthi++) {
            String tmpLocal = "";
            String tmpDomain = "";

            tmpLocal = emails[i].substring(0emails[i].indexOf("+")).replace(".""");
            tmpDomain = emails[i].substring(emails[i].indexOf("@"));
            set.add(tmpLocal+tmpDomain);
        }

        result = set.size();

        return result;
   }

답변 미리 감사드립니다.

답변 1

답변을 작성해보세요.

0

illhumored 님  안녕하세요~  

이렇게 질문주셔서 감사합니다~

이 문제는 substring을 잘 알아야 하는 문제이죠 ^^;

replace메소드를 쓰신거 잘하셨네요, 

질문주신 내용: 

StringBuilder 를 사용하는 것이 코테에서 더 높은 점수를 받는지 궁금합니다.

=> 제가 볼때는 코테에서는 큰 차이없습니다. 

이문제는 String을 조작하는 문제입니다.

String, StringBuilder, StringBuffer 어디에 담아서도 substring, replace, split을이용해서 잘라서 넣으면 되는거죠

참고로 면접가면 StringBuilder(async), StringBuffer(sync) 쓰레드 처리할때 장단점 물어보죠

이건 찾아서 차이점 보세요

(저는 헬쓰빌더는 아저씨가 하니까 StringBuilder는 async 이렇게 무식하게 외우죠) 

보통 코테에서는 정확성, 효율성 2가지를 측정하는데요

정확하게 맞췄는지가 중요하고(당연하겠죠)

효율성은 이 문제에서는 없다고 봅니다. 

만약에 문제에서 효율성을 점수를 더 준다고 표시되어 있다면 얘기가 다른죠 그땐

그때의 효율성은 시간복잡도 , 공간복잡도를 생각해야합니다.

시간복잡도만 대부분 생각하면됩니다.

시간복잡도하면 binarySearch, priorityQueue를 생각해서 푸시면 대부분 해결됩니다.

그것들만이 logN의 속도로 시간을 감소시키기 때문입니다.

나중에 문제 업데이트할때 이부분도 고려할 예정입니다.

네 앞으로도 좋은 질문주세요~

감사합니다~