프로그래머스 전화번호 목록
length, length(), size()
- length = 배열의 길이
- length() = 문자열의 길이
- size() = 컬렉션프레임워크의 길이
- 리스트 또는 Array 등 컬렉션 안에 들어있는 원소의 갯수(?)
import java.util.HashMap;
class Solution {
public boolean solution(String[] phone_book) {
//hashMap 생성
HashMap<String, Integer> map = new HashMap<>();
for(int i = 0; i<phone_book.length; i++)
map.put(phone_book[i],1);
//map 안에 접두어가 있는지 확인
for(int i=0; i<phone_book.length; i++)
for(int j=0; j<phone_book[i].length(); j++)
if(map.containsKey(phone_book[i].substring(0,j)))
return false;
// 여기까지 왔다면 접두어가 없다는 의미
return true;
}
public static void main(String[] args){
String[] phone_book = {"119", "97684223", "1195524421"};
Solution sol = new Solution();
System.out.println(sol.solution(phone_book));
}
}
- phone_book의 배열의 길이만큼 돌면서 인덱스 마다 1추가
- 다시 phone_book 길이 만큼 돌면서 각각의 인덱스의 문자열만큼 j를 통해 다시돈다.
- 위에서 각각의 인덱스에 해당하는 문자열을 0~j만큼 돌은 값을 containsKey에 담고 map에 있는지 확인
- 접두어가 있으면 false를 반환하도록 설정(if문으로)
- 만약 위 과정까지 밞았는데 false가 반환되지 않는다면 true 반환
containsKey()
- map에서 인자로 보낸 key가 있다면 true 없다면 false
- 여기서는 접두어가 있다는 의미이므로 false 반환
substring(i,j)
- 문자열의 시작(i) 인덱스부터 종료(j)인덱스 까지에 해당하는 값을 반환
Feat. 유튜버 "개발자로 취직하기"