bit가 눈 앞에서 왔다갔다

Java) 프로그래머스 42577 전화번호 목록 본문

Algorithm/Prob

Java) 프로그래머스 42577 전화번호 목록

헬린인형 2022. 3. 29. 02:22

https://programmers.co.kr/learn/courses/30/lessons/42577?language=java 

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

package Programmers;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class j42577 {

    public static void main(String[] args){
            String[] phone_book = {"119", "97674223", "1195524421"};
            System.out.println(solution(phone_book));

    }

    public static boolean solution(String[] phone_book) {

        boolean answer = true;

        Map<String, Integer> phone_book_map = new HashMap<String, Integer>();

        for(int a=0; a<phone_book.length; a++) {
            for(int b=1; b<phone_book[a].length(); b++) {
                phone_book_map.put(phone_book[a].substring(0,b),1);
            }
        }

        for(int a=0;a<phone_book.length;a++) {
            if(phone_book_map.containsKey(phone_book[a])){
                answer = false;
                break;
            }
        }

        return answer;
    }

}

 

* 새롭게 알게 된 것들

1) 정렬

import java.util.Arrays;
Arrays.sort(arr);    //오름차순
Arrays.sort(arr, Collections.reverseOrder());    //내림차순

2) 향상된 for문

for(int a=0; a<phone_book.length; a++) {
    for(int b=1; b<phone_book[a].length(); b++) {
        phone_book_map.put(phone_book[a].substring(0,b),1);
    }
}

for (String s : phone_book) {
    for (int b = 1; b < s.length(); b++) {
        phone_book_map.put(s.substring(0, b), 1);
    }
}

약간 파이썬 느낌인가

3) length -> 배열의 길이

length() -> 문자열의 길이

 

해시 - https://www.youtube.com/watch?v=Vi0hauJemxA

 

 

 

반응형
Comments